[英]I am getting wrong output in my cpp program
while(t--){
string str, token, dummy;
cin.ignore();
getline(cin ,str);
int pos = str.find(' ');
token = str.substr(pos+1);
str = str.substr(0, 3);
cout << str << " " << token << endl;
}
在提供输入时:
添加黑客等级
添加黑客
找到hac
找哈克
output 作为:
添加黑客等级
dd黑客
工业
工业
我缺少第二行输入的第一个字符。
来自 istream ignore() [强调添加]
basic_istream& 忽略(std::streamsize count = 1, int_type delim = Traits::eof());
从输入 stream 中提取并丢弃字符,直到并包括 delim。
count
的默认值为1
。 因此,当您在没有任何参数的情况下调用它时,它会忽略输入 stream 中的1
字符。
您正在观察这种忽略第二行输入的第一个字符的行为,因为您可能在while
循环之前给出了一些输入值(可能是t
的输入值,像这样 - cin >> t
)并点击正在离开的输入按钮输入 stream 中的杂散\n
。 cin.ignore()
的第一次执行从输入\n
和从第二个输入字符串开始吃掉了输入的第一个字符。
为了解决这个问题,你可以简单地在输入值之后添加cin.get()
,然后进入while
循环,然后从循环体中删除cin.ignore()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.