首页 文章

如何跳过一行标准输入?

提问于
浏览
4

我正在阅读标准输入,并且当我遇到以“a”开头的行时,我想停止跳过所有内容:

while(cin.peek() != 'a') {
    cin.get();
}

唯一的问题是,如果我在行中间有一个a,这也会触发 . 我会尝试 cin.getline(); 但我不知道线的最大长度 . 有没有办法去下一行?

2 回答

  • 2

    您可以将 cin.get() 替换为 cin.ignore(numeric_limits<streamsize>::max(), "\n") .

    其中 numeric_limits<streamsize>::max() 是要提取的最大字符数, "\n" 表示要停止提取字符的值是End Of Line(除了End Of File) .

  • 0

    你可以自己做,像这样:

    #include <iostream>
    #include <string>
    
    int main() {
        bool skip = true;
        for(std::string line; std::getline(std::cin, line);)
        {
            if(line.size() && line[0] == 'a')
                skip = false;
            if(!skip)
                std::cout << line<< std::endl;
        }
        return 0;
    }
    

    现场演示

    这将忽略每一行读取,直到遇到非空行,以 a 字符开头 . 之后,它将停止跳过读取的行,并打印每一行 .

相关问题