我们应该在竞争性节目中使用cin.ignore()吗?

时间:2013-12-06 19:03:01

标签: c++ cin

输入是一个整数,后跟两个字符串。

我想写下面的代码

cin>>num;
cin.ignore( numeric_limits<streamsize>::max(), '\n' );
getline(cin,string1,'\n');
getline(cin,string2,'\n');

如果我省略第2行,则代码在我的编译器上失败。我不知道在线裁判是如何运作的。是否需要cin.ignore()函数?是否还需要分隔符?

2 个答案:

答案 0 :(得分:3)

  

是否需要cin.ignore()函数?

是的,否则第一个getline将获得包含第一个数字的行的(可能是空的)剩余部分。

  

分隔符'\ n'是否也需要?

是的,默认情况下,它会忽略所有字符,包括行尾。指定\n以忽略当前行末尾(包括)所有字符。

答案 1 :(得分:-1)

这是我今天刚刚发现的东西,所以我在这里与你分享。

当您输入数值时,请使用

cin>>numberVar>>ws;

这将避免使用空格,并允许您使用

getline(cin, stringVar);

没有任何问题。

乐意帮助。