Вот мой код, цель — открыть файл, прочитать слова в этом файле и вести подсчет количества строк в файле. Моя проблема в том, что когда я запускаю свою программу и вызываю тестовый файл, только первая строка этого файла читается и печатается, я не совсем уверен, что с ней не так, любая помощь будет полезна.
вот что у меня в тестовом файле:
это &% file должен !!, …
ровно 7 слов
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main(){
ifstream inputFile;
string fileName, inputRead;
string sentinel = "quit";
int count = 0;
cout<< "what file do you want to open?: ";
cin>> fileName;
inputFile.open(fileName);
while(!inputFile){
cout<< "\nError opening file." <<endl;
cout<< "Please enter filename correctly: ";
cin>> fileName;
inputFile.open(fileName);
}
while(fileName != sentinel){
if(inputFile){
inputFile >> inputRead;
count++;
cout<< endl;
cout<< fileName << " data" <<endl;
cout<< "*********************************\n" <<endl;
cout<< inputRead <<endl;
cout<< "\n*********************************" <<endl;
cout<< fileName << " has " << count << " words." <<endl;
cout<< "\nEnter another file name or type \"quit\" to end: ";
cin>> fileName;
}
}
inputFile.close();
cout<< endl;
}
Проблема заключается в операторе if внутри цикла while. Если имя файла не совпадает с sentinel, вы проверяете, является ли inputFile допустимым. Если это так, вы выполняете строки кода внутри только один раз, прежде чем получить новое имя файла. То, что вы хотите, это что-то вроде этого:
while(fileName != sentinel){
cout<< endl;
cout<< fileName << " data" <<endl;
cout<< "*********************************\n" <<endl;
while(inputFile >> inputRead){
count++;cout<< inputRead <<endl;
}
cout<< "\n*********************************" <<endl;
cout<< fileName << " has " << count << " words." <<endl;
cout<< "\nEnter another file name or type \"quit\" to end: ";
cin>> fileName;
}
Других решений пока нет …