嗨我对cin和缓冲区有疑问。 我想制作一个简单的io程序,它采用整数。
无论如何我偶然发现了缓冲区问题。在windows7中使用MinGW,以下代码将打印出我输入的所有四个整数。但是当我切换到SunOS并用G ++编译它时,它只打印出第一个整数。这是编译器问题还是操作系统问题?
#include <iostream>
using namespace std;
int main()
{
int i;
cout << "Enter four integers: ";
cin >> i;
cout << "\nYou entered the numbers: " << i << " ";
cin >> i; cout << " ";
cin >> i; cout << " ";
cin >> i; cout << " ";
return 0;
}
答案 0 :(得分:1)
代码应在任何系统上打印出第一个数字。
cout << " ";
与
cout << " " << i;
因此,许多指南声明每行只能进行一次操作。 cin只是在视觉上使阅读混乱。实际上你从来没有输出i
除了第一次。
答案 1 :(得分:1)
在这些方面:
cin >> i; cout << " ";
cin >> i; cout << " ";
cin >> i; cout << " ";
...你正在读一个数字(如果可能的话),但只是打印出一个空格,不是你刚读过的数字。如果你真的需要这样做,我可能会写一个小函数,并使用它:
int get_input() {
int ret;
cin >> ret;
cout << ret;
return ret;
}
// ...
cout << "Enter four integers: ";
for (int i=0; i<4; i++)
get_input();
我不能说我对这个功能特别兴奋,但在这种情况下,它可能至少比没有好一点(只是很多更好)。