C ++ - getline()由于某种原因一遍又一遍地读取相同的行

时间:2012-10-07 03:20:59

标签: c++ getline

我想知道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语句没有按照它们应该运行,并且当它应该时它不会突破该循环(尽管它最终会突破它,但是我还不知道究竟是怎么回事。

任何人都知道造成这个问题的原因是什么?

提前致谢。

0 个答案:

没有答案