@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; } |
@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
. Каждая строка сохраняется как элемент вектора. После чтения всех строк, файл закрывается.