在写输入接口时,对于录入数组遇回车截止的需求比较高,在网上查阅后得到了解答,此处感谢1楼作者给出的解答。
程序遇到cin>>时:
cin>>temp;
cin>>temp2
用户开始在键盘上写数组 1‘空格符’2‘空格符’3‘回车符’,看起来是1 2 3:
1 2 3
系统遇到用户的回车符,将 1‘空格符’2‘空格符’3‘回车符’放入输入缓存区;然后程序开始往后面进行
>>temp;
cin>>从缓存区把“东西”赋给temp,录入规则是,如果读到“空格符”,“制表符”和“换行符”跳过,直到读到“东西”,然后读至新的“空格符”,“制表符”和“换行符”结束,注意!!后面读到的“空格符”,“制表符”和“换行符”并不会从缓存区扔掉!!
运行完
cin>>temp;
后,缓存区留下的内容是
‘空格符’2‘空格符’3‘回车符’
然后运行
cin>>temp2;
缓存区留下的是:
‘空格符’3‘回车符’
录入数组遇回车截止的思路是,用cin.get()来读取缓存区的第一个字符,如果是‘回车符’就截止。
#include <iostream>
#include <vector>
using namespace std;
int main()
{
printf("hello, world\n");
cout << "input the int vector ended by ENTER" << endl;
vector<int>a(0);
int temp;
while (cin >> temp){
a.push_back(temp);
if (cin.get() == '\n')break;
}
for (int i = 0; i < a.size(); i++){
cout << a[i] << " ";
}
getchar(); /*防止程序一闪而过*/
return 0;
}
这样就实现了需求的功能!!!