我想知道WTF我的while循环,它叫做istream& getline(istream& is,string& str);继续阅读同一行。我有以下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语句没有按照它们应该运行,并且当它应该时它不会突破该循环(尽管它最终会突破它,但是我还不知道究竟是怎么回事。
任何人都知道造成这个问题的原因是什么?
提前致谢。