运行程序之后,输入一行整数,然后按回车,但是为什么按回车之后不显示输出,直接换行了啊

关注引自免费微信小程序:皆我百晓生
在C++中,std::cin 读取输入时默认只读取一个字符,直到遇到空格、制表符或换行符才会停止读取,并将这个值赋给变量。因此,在你的代码中,当你按下回车键后,std::cin 会读取到一个换行符('\n'),而这个换行符并没有被存储到 x 变量中,而是留在了输入缓冲区。
为了解决这个问题,你需要在读取完一个整数后清除输入缓冲区中的换行符。你可以通过在读取操作后面添加一个额外的 std::cin.ignore() 来实现这一点,如下所示:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> v;
int x = 0;
while (cin >> x) {
v.push_back(x);
// 清除输入缓冲区中的换行符
cin.ignore();
}
vector<int>::iterator it;
for (it = v.begin(); it != v.end(); ++it) {
cout << *it << " "; // 在每个数字之间加上空格,使输出更易读
}
cout << endl; // 输出一个换行符,使得输出看起来整洁
return 0;
}
在这个修改后的版本中,我在每次读取完一个整数后调用了 cin.ignore() 函数,它会跳过输入流中的下一个字符(在这里是换行符)。这样,当循环结束并开始打印向量元素时,就不会因为之前的换行符而直接换行了。同时,我在输出每个元素后加了一个空格,使输出更易读。最后,为了保持输出格式的一致性,我在循环结束后添加了一个换行符。