我是C ++的新手,这是我的代码:
int main(int argc, const char * argv[]) {
vector<double> nums;
double input;
while (cin >> input) {
nums.push_back(input);
}
for (int i = 0; i < nums.size(); i++) {
cout << nums[i] << endl;
}
return 0;
}
当程序运行时,我以这种方式输入3个数字:
Enter numbers: 1 2 3
在我输入3
后,我立即按ctrl+d
和enter
。但是,只打印两个数字。
如果我在输入3
后立即按enter, ctrl+d, enter
,则会打印三个数字。
我想如何打印所有3个数字,无论我先按哪个键。提前谢谢。
答案 0 :(得分:0)
您的C ++代码很好。它是shell中导致此问题的终端设置。在提交行之前,不会解释在Linux终端中键入的^ D(^ D暗示Unix或Mac)。要检查我的断言是否正确,请创建一个这样的文件:
echo -n 1 2 3 > /tmp/stuff.txt
现在仔细检查文件中没有终止换行符
cat /tmp/stuff.txt
你会注意到缺少换行符。现在运行您的程序 - 该程序正常 - 对文件
./a.out < /tmp/stuff.txt
工作正常。