Я работаю над функцией, которая читается в строках файла до тех пор, пока в файле не будет достигнута строка «XXX», и счетчик отслеживает, сколько строк было прочитано. Затем программа подсчитывает оставшееся количество строк в файле. Я использую оператор if, чтобы определить, когда нужно разбить цикл while (когда чтение строки равно «XXX»), и условие не выполняется. Даже когда строка == «XXX», оператор else все равно будет работать. Что случилось с моим кодом? Благодаря!Оператор C++ if, сравнивающий строки, не работающие
#include <string>
#include <iostream>
#include <fstream>
using std::string;
using std::endl;
using std::cout;
using std::ifstream;
int main()
{
//Main function
}
void read_file(string input_file_name)
{
string i_filename = input_file_name;
ifstream infile;
infile.open (i_filename);
string line;
int num_of_terms1 = 0;
int num_of_terms2 = 0;
if (!infile)
{
cout << "Your input file could not be opened."<<endl;
}
else
{
while (!infile.eof())
{
getline(infile, line);
cout << line << endl;
if (line == "XXX")
{
break;
}
else
{
cout << line << endl;
num_of_terms1++;
}
}
while (!infile.eof())
{
getline(infile, line);
cout << line << endl;
num_of_terms2++;
}
}
cout << "Terms 1: "<<num_of_terms1 <<endl;
cout << "Terms 2: "<< num_of_terms2 <<endl;
infile.close();
}
Вот входной пример файла, inputfile.txt:
-2 3
4 2
XXX
-2 3
Заранее спасибо за помощь!
Как выглядит вывод? – maxywb
Почему бы вам не выполнить некоторую отладку. Начните с проверки значений 'line' на каждой итерации цикла. Ваша настоящая проблема заключается не в том, что программа не работает, а в том, что вы еще не научились отлаживать. Как только вы это сделаете, вы сможете решить все эти проблемы самостоятельно. –
Почему вы думаете, что «Даже когда строка ==« XXX », оператор else все равно будет работать»? – Slava