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