如何跳过一行标准输入?

Des*_*ony 6 c++ io

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

while(cin.peek() != 'a') {
    cin.get();
}
Run Code Online (Sandbox Code Playgroud)

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

gsa*_*ras 3

你可以自己做,像这样:

#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;
}
Run Code Online (Sandbox Code Playgroud)

Live demo

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