Funkcja, zwracanie string/char

Wątek przeniesiony 2015-11-03 17:38 z C/C++ przez ŁF.

0

Witam.

Zrobiłem sobie funkcje na czytanie wybranych linijek z pliku, wygląda ona mniej więcej tak:

 
void CzytajLinie(const string str,int wiersz)
{
	char *filename = new char[str.size()+1];
	strcpy(filename,str.c_str());
	fstream plik(filename,ios::in|ios::out);
	plik.seekg(0,ios::beg);
	string buf;
	for(int i=0;i<wiersz;i++)
	{
		getline(plik,buf);
	}
	cout<<buf<<endl;
}

poki co wyswiela zmienna "buf", a chciałbym aby zwracała ona zmienna "buf" lecz nie wiem jak to zrobić :/

3

Masz wyciek pamięci (nie zwalniasz filename). Ogółem używanie gołego new i delete to antyidiom w C++, a tutaj jest to zupełnie zbędne, bo fstream ma konstruktor przyjmujący string const&.

string CzytajLinie(const string& str,int wiersz)
{
    fstream plik(str,ios::in|ios::out);
    plik.seekg(0,ios::beg);
    string buf;
    for(int i=0;i<wiersz;i++)
    {
        getline(plik,buf);
    }
    return buf;
}

Przy czym ten kod zwróci tylko ostatnią linijkę pliku: getline nadpisuje buf.

3

char *filename = new char[str.size()+1];
strcpy(filename,str.c_str());
fstream plik(filename,ios::in|ios::out);

Aargh.. nawet jeśli musisz mieć char*, to się to robi po prostu tak:

fstream plik(str.c_str(), ...);

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.