Pobranie linii z tekstu, (getline?)

0

W jaki sposób pobrać wylosowany wcześniej nr linii tekstu, pewnie ten sposób jest fatalny ?

string pobierzDzialanie(int wylosowanyWiersz) {
    string dzialanie;
    int i=0;
    string linia;
    ifstream file("base/base.txt");
    if(file.is_open()) {
        while(file.good()) {
            getline(file, linia);
            i++;
            if(i==wylosowanyWiersz) {
                getline(file,dzialanie);
                break;
            }
        }

    }
1

Czemu wg ciebie jest fatalny?

Przypuszczam, że pobierzDzialanie() może być wywoływana wiele razy w programie dla tego samego pliku. Jeśli tak, to może lepiej wczytac plik raz do pamięci i poszczególne linie wrzucić do vectora, a później twoja funkcja miałaby tylko wywołanie mniej więcej takie:

string pobierzDzialanie(int wylosowanyWiersz)
{
    //sprawdzenie czy nie przekraczamy rozmiaru wektora
    return lines[wylosowanyWiersz]; //gdzie lines to nasz wektor z liniami tekstu
}

dodanie znacznika <code class="cpp"> - fp

0

Jak wrzucić linie to wektora, jakieś drobne podpowiedzi ? ;)

0
vector<string> vec;
ifstream file("base/base.txt");
copy(istream_iterator<string>(file), istream_iteartor<string>(), back_inserter<vector<string>>(vec));

1 użytkowników online, w tym zalogowanych: 0, gości: 1