我怎么知道什么时候用\ n进入cin? (环)

时间:2010-10-08 06:28:31

标签: c++

来自澳大利亚的投票问题:

机器人将继续放置信息,它可以达到1000行。 他将要进入的例子:

"1 2 3
2 1 3
2 3 1
1 2 3
3 1 2
"

我怎么知道他什么时候输入信息?最后有一个额外的\ n,这是我唯一的猜测去哪里。 cin似乎没有检测到\ n,但getchar()显然确实如此。然而,即使在第一线之后它也会得到\ n,并且让它开始工作变得相当困难。我该如何做到这一点?

4 个答案:

答案 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个数字)。