c++ - 读取一些整数然后在 C++ 中读取一行文本

标签 c++ string input newline iostream

我正在读取 C++ 程序中的输入。首先是一些整数,然后是一个字符串。当我尝试使用 getline(cin,stringname); 读取字符串时,它不会读取用户键入的行:相反,我得到一个空行,从用户按下 开始输入整数后输入

cin>>track.day; //Int
cin>>track.seriesday; //Int
getline(cin,track.comment); //String

我如何清除 cin(cin.clear() 不起作用)以便字符串不会用“enter”键填充自身?

这是一个正常的输入接收,代码顶部没有什么特别的, 我有这样的问题,但我忘记了解决方案 我需要以某种方式清除 cin,这样字符串就不会被“enter”键填充。

最佳答案

我认为你的 cin of the ints 没有读取句子前的新行。 cin 跳过前导空格并在遇到非数字(包括空格)时停止读取数字。

所以:

std::cin >> num1;
std::cin >> num2;
std::cin.ignore(INT_MAX, '\n'); // ignore the new line which follows num2
std::getline(std::cin, sentence);

可能对你有用

关于c++ - 读取一些整数然后在 C++ 中读取一行文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/164022/

相关文章:

c++ - 在 C++ 中求和 1<<2 和 1<<3 时出现奇怪的输出

R:替换数据框(表)中字符串的有效方法

c# - 正则表达式 - 在特定情况下替换 C# 字符串中的字符

c++ - eof函数如何在cpp上工作?

c++ - snprintf : why not report error when second argument over destination memory

c++ - 为什么我应该使用简单的数组而不是容器类?

c++ - 为什么我无法接收 C++ 中的字符

input - 根据到目标的距离缩放 3D 相机平移/缩放

javascript - 启用/禁用输入 - knockout

javascript - 完全限制输入字段的输入