来自澳大利亚的投票问题:
机器人将继续放置信息,它可以达到1000行。 他将要进入的例子:
"1 2 3
2 1 3
2 3 1
1 2 3
3 1 2
"
我怎么知道他什么时候输入信息?最后有一个额外的\ n,这是我唯一的猜测去哪里。 cin似乎没有检测到\ n,但getchar()显然确实如此。然而,即使在第一线之后它也会得到\ n,并且让它开始工作变得相当困难。我该如何做到这一点?
答案 0 :(得分:6)
我建议使用cin.getline
它会一次得到整行(以\ n结尾),当你得到一个空行时,你知道你已经完成了。
修改强>
正如sbi所建议的那样,std :: getline对于这种情况通常是更好的选择,因为它使用string
而不是char数组。
答案 1 :(得分:3)
std::string line;
while( std::getline(std::cin,line) && !line.empty() ) {
std::istringstream iss(line);
int i1, i2, i3;
iss >> i1 >> i2 >> i3
if( !is ) throw "dammit!"
process_numbers(i1,i2,i3);
}
if( !std::cin.good() && !std::cin.eof() ) throw "dammit!";
答案 2 :(得分:1)
使用cin
读取输入,并且提取运算符>>
会跳过空格。相反,逐行读取输入并在行为空时退出。
答案 3 :(得分:0)
您可以一次读取一行,然后查找空白行(然后将每个非空行拆分为3个数字)。