Исправлено исправление второй ошибки в конце.
Вы должны работать над улучшением отладчика, я нашел вашу проблему с одним:
while (!ss.eof())
{
//extract the word by word from stream
ss >> temp;
//Check the given word is integer or not
if (stringstream(temp) >> found)
cout << "Number found: " << found << " " << endl;;
//no space at the end of string
temp = "";
}
нет Остановимся на поиске 152 в «точке 152 #», но переходим к процессу #, который превращает найденное в 0.
Этот код с разрывом исправляет эту часть:
while (!ss.eof())
{
//extract the word by word from stream
ss >> temp;
//Check the given word is integer or not
if (stringstream(temp) >> found)
{
cout << "Number found: " << found << " " << endl;
foundRelevantSection = true;
break; /* exits the while now */
}
//no space at the end of string
temp = "";
}
или вы могли бы тест, найденный в то время как, сначала устанавливая его в 0, и тестируя с && found == 0
Тогда часть, вызывающая findCurrentNumber (int currentNumber, int foundNumber)
, является мусором (или заполнителем для чего-то более сложного?), как if (findCurrentNumber (searchCurrentNumber, found) == true)
просто if (searchCurrentNumber == found)
, который намного легче читать!
Я не проверял, есть ли еще ошибки в коде, но с разрывом вы определенно получите правильное значение в найденном.
часть 2
Вы уже нашли "точку", поэтому вам не следует искать ее снова!
Я добавил foundRelevantSection в приведенном выше коде, прежде чем перерыв.
Измените следующую часть на (нет, если уместно, нет, если точка найдена):
while (getline (inputFile, line) && foundRelevantSection)
{
//if no matches were found, the function returns "string::npos"
if(line.find("total") != string::npos)
{
//relevant section ends now
foundRelevantSection = false;
}
else
{
cout << line << endl;
}
}
, надеясь, что это было последний баг ...