读取输入,则用户输入的表示完成的换行符不会从输入流中删除。因此,当您调用 getli-6ren">
gpt4 book ai didi

c++ - getline(cin, String) 在没有另一个输入的情况下接收输入

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:04:22 25 4
gpt4 key购买 nike

我的代码是这样的,

string aString;
cin >> aString;
cout << "This is what cin gets:" << aString << endl;
getline(cin, aString);
cout << "This is what getline(cin, <string>) gets:" << aString << endl;

每次我运行它时,我都会输入“12”,我得到“12”和“”。

我想知道为什么 getline 会在没有用户输入的情况下收到。

我可以理解,当我输入“12 24”之类的内容时,cin 将获得“12”,而 getline 应该获得其余部分。 (另外,如果有人能回答,中间的空格被视为 cin 的结尾,那么为什么它会传递给 getline?)

刚开始使用 C++ 上的字符串,所以请不要让它太难。谢谢你。

最佳答案

当您将标准流提取与 getline 混合使用时,getline 有时会返回空字符串。这样做的原因是,如果您使用 >> 读取输入,则用户输入的表示完成的换行符不会从输入流中删除。因此,当您调用 getline 时,该函数将读取剩余的换行符并返回空字符串。

要解决此问题,请始终对输入使用 getline,或使用 ws 流操纵器在读取后提取额外的空白区域:

cin >> value >> ws;

这会耗尽换行符,解决问题。

希望这对您有所帮助!

关于c++ - getline(cin, String) 在没有另一个输入的情况下接收输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9419500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com