Мне интересно WTF мой цикл while, который вызывает istream& getline (istream& есть строка& ул); продолжает читать ту же строку снова. У меня есть следующий цикл while (вложенный в несколько уровней других операторов while и if), который вызывает getline, но мой выходной оператор, являющийся первой строкой кода в блоке кода цикла while, говорит мне, что он читает ту же строку и еще раз, что объясняет, почему мой выходной файл не содержит правильные данные, когда моя программа завершена.
while (getline(file_handle, buffer_str)) {
cout<< buffer_str <<endl;
cin.get();
if ((buffer_str.find(';', 0) != string::npos) && (buffer_str.find('\"', 0) != string::npos)) { //we're now at the end of the 'exc' initialiation statement
buffer_str.erase(buffer_str.size() - 2, 1);
buffer_str += '\n';
for (size_t i = 0; i < pos; i++) {
buffer_str += ' ';
}
buffer_str += "throw(exc);\n";
for (size_t i = 0; i < (pos - 3); i++) {
buffer_str += ' ';
}
buffer_str += '}';
}
else if (buffer_str.find(search_str6, 0) != string::npos) { //we're now at the second problem line of the first case
buffer_str += " {\n";
output_str += buffer_str;
output_str += '\n';
getline(file_handle, buffer_str); //We're now at the beginning of the 'exc' initialiation statement
output_str += buffer_str;
output_str += '\n';
while (getline(file_handle, buffer_str)) {
if ((buffer_str.find(';', 0) != string::npos) && (buffer_str.find('\"', 0) != string::npos)) { //we're now at the end of the 'exc' initialiation statement
buffer_str.erase(buffer_str.size() - 2, 1);
buffer_str += '\n';
for (size_t i = 0; i < pos; i++) {
buffer_str += ' ';
}
buffer_str += "throw(exc);\n";
for (size_t i = 0; i < (pos - 3); i++) {
buffer_str += ' ';
}
buffer_str += '}';
}
output_str += buffer_str;
output_str += '\n';
if (buffer_str.find("return", 0) != string::npos) {
getline(file_handle, buffer_str);
output_str += buffer_str;
output_str += '\n';
about_to_break = true;
break; //out of this while loop
}
}
}
if (about_to_break) {
break; //out of the level 3 while loop (execution then goes back up to beginning of level 2 while loop)
}
output_str += buffer_str;
output_str += '\n';
}
Из-за этой проблемы мой оператор if, а затем мой оператор else в моем цикле не работают должным образом, и он не выходит из этого цикла, когда должен (хотя в конечном итоге он выходит из него, но я не пока точно не знаю как)
Кто-нибудь есть идеи, что может быть причиной этой проблемы?
Заранее спасибо.
Задача ещё не решена.
Других решений пока нет …