Хорошо, так что прошло некоторое время с тех пор, как я испортил чтение и запись файла, и я почти забыл все, что узнал. Итак, я сейчас просто пытаюсь понять, как читать определенные строки из текстового файла и выводить эту строку в командную строку. Вот мой код, я имею проблемы с:Как читать отдельные строки текстового файла с помощью C++
#include <iostream>
#include <fstream>
using namespace std;
int main(){
ifstream input;
int lineN=0;
string line[lineN];
input.open("input.txt");
getline(input, line[lineN]);
cout << line[lineN];
}
Как это в настоящее время, он будет читать первую строку текстового файла не проблема. Однако, если я изменяю переменную lineN (которая обозначает номер строки) на 1 для чтения второй строки, она вызывает запрос. Я понятия не имею, что это такое, я делаю неправильно. Я попытался изучить эту проблему, но ответ каждого слишком расплывчатый (это или я просто слишком тупой). Если бы вы могли мне помочь, это здорово.
ломаная линия [5] будет определять массив размером 5, с доступными индексами [0] - [4], примечание [5] является _not_ действительным индекс. То, что ваша программа не разбивается с помощью строкиN = 1, является чистой «удачей». В любом случае, это просто говорит getline, где хранить то, что он читает, а не от того, где его читать. Таким образом, вы всегда будете читать первую строку текстового файла. И getline, никогда не получающий значение «lineN», должен быть абсолютно очевидным и самоочевидным для вас, если он не пытается снова изучить основы областей и вызовов функций. – cooky451
'getline (input, line [lineN]);' - Вы получаете доступ к элементу за пределами массива, что приводит к неопределенному поведению. –
Это не должно даже компилироваться: 'std :: string line [lineN];' не является законным в C++. Вы компилируете в C++, не так ли? (Со всеми компиляторами, которые я знаю, вам нужны специальные опции для компиляции на C++, а не на какой-то пользовательский язык, полученный из C++.) –