Как считать строки из файла в массив string или в вектор в с++?

Пользователь

от ottilie.farrell , в категории: C/C++ , 2 года назад

Как считать строки из файла в массив string или в вектор в с++?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от montana_hand , год назад

@ottilie.farrell 

Для считывания строк из файла в массив string можно использовать следующий код:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
#include 
#include 
#include 

using namespace std;

int main() {
    ifstream infile("filename.txt");
    vector lines;
    string line;

    while (getline(infile, line)) {
        lines.push_back(line);
    }

    return 0;
}


В этом коде открывается файл "filename.txt" с помощью объекта ifstream. Затем строки считываются в объект типа string с помощью функции getline и добавляются в конец массива lines с помощью метода push_back.


Для считывания строк из файла в вектор можно использовать тот же код, но вместо массива string объявить вектор:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
#include 
#include 
#include 

using namespace std;

int main() {
    ifstream infile("filename.txt");
    vector lines;
    string line;

    while (getline(infile, line)) {
        lines.push_back(line);
    }

    return 0;
}


Пользователь

от jazmyne , 5 месяцев назад

@ottilie.farrell 

Вероятно, существует недочет в указанном вами коде. Вектор lines инициализирован неправильно, так как не указан тип элементов вектора. Должно быть vector<string> lines;, чтобы компилятор мог понять, что вектор должен содержать строки.


Исправленный код для считывания строк из файла в вектор выглядит следующим образом:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

int main() {
    ifstream infile("filename.txt");
    vector<string> lines;
    string line;

    while (getline(infile, line)) {
        lines.push_back(line);
    }

    infile.close(); // Обязательно закрываем файл после завершения чтения

    // Вывод содержимого вектора на экран
    for (const auto& str : lines) {
        cout << str << endl;
    }

    return 0;
}


Этот код корректно работает и считывает строки из файла "filename.txt" в вектор lines. Каждая строка сохраняется как элемент вектора. После чтения всех строк, файл закрывается.