我正在阅读标准输入,并且想在遇到以“ a”开头的行时停止跳过所有内容:
while(cin.peek() != 'a') {
cin.get();
}
唯一的问题是,如果我在行的中间有一个a,这也会触发。
我会尝试cin.getline();
,但不知道该行的最大长度。有没有办法直接转到下一行?
答案 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
这将忽略每个读取的行,直到遇到以#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"
表示要停止提取字符的值是行尾(除了文件尾)。