输入是一个整数,后跟两个字符串。
我想写下面的代码
cin>>num;
cin.ignore( numeric_limits<streamsize>::max(), '\n' );
getline(cin,string1,'\n');
getline(cin,string2,'\n');
如果我省略第2行,则代码在我的编译器上失败。我不知道在线裁判是如何运作的。是否需要cin.ignore()函数?是否还需要分隔符?
答案 0 :(得分:3)
是否需要cin.ignore()函数?
是的,否则第一个getline
将获得包含第一个数字的行的(可能是空的)剩余部分。
分隔符'\ n'是否也需要?
是的,默认情况下,它会忽略所有字符,包括行尾。指定\n
以忽略当前行末尾(包括)所有字符。
答案 1 :(得分:-1)
这是我今天刚刚发现的东西,所以我在这里与你分享。
当您输入数值时,请使用
cin>>numberVar>>ws;
这将避免使用空格,并允许您使用
getline(cin, stringVar);
没有任何问题。
乐意帮助。