C++ 我们应该在竞争性编程中使用cin.ignore()吗?

C++ 我们应该在竞争性编程中使用cin.ignore()吗?,c++,cin,C++,Cin,输入是一个后跟两个字符串的整数 我想写下面的代码 cin>>num; cin.ignore( numeric_limits<streamsize>::max(), '\n' ); getline(cin,string1,'\n'); getline(cin,string2,'\n'); cin>>num; cin.ignore(数值限制::max(),'\n'); getline(cin,string1,'\n'); getline(cin,string2,'\n');

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

我想写下面的代码

cin>>num;
cin.ignore( numeric_limits<streamsize>::max(), '\n' );
getline(cin,string1,'\n');
getline(cin,string2,'\n');
cin>>num;
cin.ignore(数值限制::max(),'\n');
getline(cin,string1,'\n');
getline(cin,string2,'\n');
如果省略第2行,则代码在编译器上失败。我不知道在线法官是怎么工作的。是否需要cin.ignore()函数?是否也需要分隔符“\n”

是否需要cin.ignore()函数

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

是否也需要分隔符“\n”


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

这是我今天刚刚发现的,所以我在这里与大家分享

当您为数值输入时,请使用

cin>>numberVar>>ws;
这将避免空白,并允许您使用

getline(cin, stringVar);
没有任何问题


很高兴提供帮助。

我在CodeChef
int main()'中遇到以下编译错误:prog.cpp:23:错误:“numeric\u limits”未在此范围内声明prog.cpp:23:错误:在“>”标记prog.cpp:23:错误:没有匹配的函数用于调用“max()”
代码块上运行的代码。那么是什么错误?@user2441151
数值限制在标题
中定义。谢谢。我想了一会儿,但是它在没有头文件的代码块中工作。现在在CodeChef上编译:)