Вы пытаетесь присвоить строковое значение переменной строкового массива, вы должны getline(inFile, intext[i]);
, где i
- номер строки.
Также ваш массив может содержать только 18 строк текста, потому что выобъявил об этом так.Если вы хотите читать файлы, которые содержат ровно 19 строк, вы должны объявить это следующим образом:
string intext[19];
Если вы хотите, чтобы ваша программа читала любое количество строк, вы должны использовать std :: vector.
Кроме того, ваш цикл while будет повторяться только один раз.потому что вы нарушаете это безоговорочно.Я думаю, что вы хотели сделать что-то вроде этого:
inFile.open("HW3_Data_W.txt");
int i = 1;
while (inFile.is_open()) {
getline(inFile, intext[i]);
i = i + 1;
cout << "Data from the file:" << endl;
cout << "Item 1: " << intext << endl;
if(inFile.eof) continue;
inFile.close();
}
Этот код должен работать, но излишне сложен.Ваше условие while проверяет, открыт ли ваш файл, но он будет открыт до тех пор, пока вы его не закроете, и вы захотите закрыть его, когда достигнете конца файла.Таким образом, ваше условие while выглядит следующим образом: while (getline (inFile, intext [i])) getline вернет значение, которое можно преобразовать в false, если оно достигнет последней строки вашего файла, поэтому ваше while будет идти до тех пор, пока вы не прочитаете while file.И вы должны проверить, если файл открыт до вашего времени, а затем вы должны закрыть файл через некоторое время.Вот как то так:
inFile.open("HW3_Data_W.txt");
int i = 0;
if(!inFile.is_open())
return EXIT_FAILURE;
while(getline(inFile, intext[i])) {
cout << "Item "<<i<<": " << intext[i] << endl;
}
inFile.close()