如何跳过标准输入行?

时间:2018-12-09 14:14:53

标签: c++ io

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

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

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

2 个答案:

答案 0 :(得分:2)

您可以自己做,就像这样:

library (MASS)
library(tree)
set.seed (1)
train = sample (1: nrow(Boston ), nrow(Boston )/2)
tree.boston =tree(medv~.,Boston ,subset =train)
summary (tree.boston )
cv.boston =cv.tree(tree.boston,K=10)
cv.boston

Live demo

这将忽略每个读取的行,直到遇到以#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; } 字符开头的非空行。之后,它会停止并跳过读取的行,并打印每一行。

答案 1 :(得分:0)

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

其中numeric_limits<streamsize>::max()是要提取的最大字符数,"\n"表示要停止提取字符的值是行尾(除了文件尾)。