Getline problem
Getline problem
我有以下代码:
system("CLS");
string title;
string content;
cout << "Get title." << endl;
getline(cin,title);
cout << "Get content." << endl;
getline(cin,content);
问题是,应用程序不是在问标题,我有获取标题,获取内容,然后等待用户输入,它不是在获取标题后等待用户输入。我必须添加任何中断或smth吗
或者,这不是从用户输入中读取整行文本的最佳主意?
如果在system()
调用之前有一个cin >> something;
调用。
例如,将输入作为一个整数。当cin >> myintvar;
(或类似)时,整数被放在myintvar
中,并且'\n'在流中被发送。getline
拾取n
作为输入行结束的指示,因此它被有效地"跳过"。
将cin >>
更改为getline()
或者调用cin.ignore()
来获取'n'
(或者更好的是,调用cin.ignore (std::numeric_limits<std::streamsize>::max(), 'n' );
来刷新输入缓冲区——但要确保在这个过程中没有丢弃有价值的输入)。
我敢打赌,您有一个类似于菜单的东西来选择选项(作为数字类型),然后尝试读取行。
发生这种情况是因为在std::cin读取某些值后,剩余的'\n'尚未处理,解决方案是包括#include <limits>
,然后将std::cin.ignore(std::numeric_limits<streamsize>::max(),'n');
放在getline(cin,title);
之前
这是因为当您使用getline()时,它会忽略行末尾的换行符,并将其输入到输入队列中,因此当您的getline函数下次被调用时,它遇到上一个getline(。所以这就是为什么它不需要你的任何意见。你可以使用类似的东西
getline(cin,title);
cin.get();
希望这能奏效。
相关文章:
- Seg Fault Issue C++ (file IO / getline)
- 当用户键入分隔符时,停止getline()输入
- getline() 的原型/库是什么;
- 错误 没有与参数列表匹配的重载函数"getline"实例
- 如何在 c++ 中使用 ',' 作为 getline 分隔符
- 错误:调用'getline'没有匹配函数
- 如何在 c++ 中使用 getline 从文件中读取字符串?
- 将 getline() 与文件一起使用
- 我有三个 getline,但是一旦编译,输入就太多了
- 在 std::getline 和 std::cin 期间卡在循环中
- 为什么 getline() 不读取文本文件中的所有内容?
- 有没有办法在不使用 getline() 的情况下从.csv文件中读取?
- 确切地说,如何解释 std::getline(stream, string) 函数在C++中填充的字符串
- std::getline没有在while循环中重新请求用户输入
- 谁能告诉我我用 getline 做错了什么 (cpp) 格式
- Getline(cin,str)的奇怪输出
- 我在C++中使用 getline() 函数时遇到问题
- 而循环跳过 cin.getline() 对于 C 字符串
- 如何在 getline 中删除/忽略超过特定数字的字符?
- Getline problem