使用ignore跳过一到两行

时间:2014-04-05 17:54:36

标签: c++

我试图跳过输入文件的第一行,可能还有第二行。

    //Ignore first line, second if begins with #
in.ignore(256, '\n');
char c = in.peek();
if(c == '#') 
    in.ignore(256, '\n');

//read in all nums, including x, y, gs
while(in >> num) {
    pic.push_back(num);
}

我的问题是,没有任何东西被推回到图片中。我是否正确使用了忽略?

1 个答案:

答案 0 :(得分:0)

我在两种情况下测试了你的代码。

  1. 第一行短于256个字符。在这种情况下,它的核心工作。
  2. 第一行长于256个字符。在这种情况下,它会中断。
  3. 然而,使用DietmarKuhl建议的修复程序,代码不再破坏:

    #include <iostream>
    #include <limits>
    
    using namespace std;
    int main(){
        cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
        char c = cin.peek();
        if(c == '#') 
            cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
    
        int num;
    
        //read in all nums, including x, y, gs
        while(cin >> num) {
            cout << num << endl;;
        }
    }