繁体   English   中英

我在我的 cpp 程序中弄错了 output

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM