c++ - 如何跳过一行标准输入?

标签 c++ io

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

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

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

最佳答案

你可以自己做,像这样:

#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 字符开头的非空行。之后,它将停止跳过读取的行,并打印每一行。

关于c++ - 如何跳过一行标准输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53693218/

相关文章:

c++ - 何时使用右值引用

C++ 将二进制数据转换为十六进制字符串并返回

error-handling - 纯Fortran过程中的I/O

python - 从文件中读取 I/O (python)

c++ - QCompare 测试失败 : wrong number of arguments produced by the [] operator on an unorded_map

c++ - 通过返回指向节点的指针,是否也返回了列表的其余部分? C++

c++ - std::string (*)[96][60] 和 std::string* [96][60] 有什么区别?

r - 读取单列 CSV 文件的更快方法

java - "DataOutputStream"和 "ObjectOutputStream"之间的区别

linux - 为什么直接打印到控制台/终端比重定向慢?