录入数组遇回车截止(c++)

在写输入接口时,对于录入数组遇回车截止的需求比较高,在网上查阅后得到了解答,此处感谢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;
}

这样就实现了需求的功能!!!

猜你喜欢

转载自blog.csdn.net/sangohan77/article/details/79849811