首页 > 解决方案 > 如何跳过一行标准输入?

问题描述

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

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

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

标签: c++io

解决方案


你可以自己做,像这样:

#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;
}

Live demo

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


推荐阅读