C++编程输入数组的处理——不给数组长度,直接给一行数组

来源:互联网 发布:手机域名注册官网 编辑:程序博客网 时间:2024/06/05 09:20
正常情况下,我们要从键盘读一个数组,一般会先告诉你一个数组大小size,然后可以创建相应的数组a[size](注:C++11允许变量作为数组长度)或者建立vector<T>(size). 然后就可以用一个size次的循环正好把size个数组元素存进去。

int main()
{
       int n = 0;
       cin >> n;
       vector<int> p(n);
       for(int i = 0; i < n; i++){
              cin >> p[i];
       }
       return 0;
}

但是如果不给数组长度怎么办?直接扔给你一个行数组元素,怎么把他们存到对应整数数组中呢?

1.while(cin>>a[i++])好像是不可以的。cin>>操作符是根据后面变量的类型读取数据。
输入结束条件 :遇到Enter、Space、Tab键。 对结束符的处理 :丢弃缓冲区中使得输入结束的结束符(Enter、Space、Tab)
在VS2103中,输入一行数组元素之后他不会终止,会让你继续输入。


2.这种方法使用getchar和cin共同进行处理。假设输入为-1,1,-1,1。首先,cin>>会根据i的类型读一个int,他遇到space会终止,因此第一次得到-1,接着每次getchar都会得到一个空格,这时候继续读就会读到第二个元素1,一直while到终止条件,读到一个换行符“\n”.
int main()
{   
       vector<int> a;
       int i = 0;
       do{
              cin >> i;
              a.push_back(i);
       }while(getchar() !='\n');
       return 0;
}

3.使用getline(cin, str)读到一行字符串,然后将getline得到的stringstream input中,然后input>>输出会被space截断,直接>>到一个int类型这种就可以自动实现类型转换,也很方便。当然也可以用atoi。

#include<sstream> //注意加这个头
int main()
{
       string str,temp;
       getline(cin, str);
       int i = 0;
       vector<int> p;
       stringstream input(str);
       while(input >> i){
              p.push_back(i);
       }      
       return 0;
}

阅读全文
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 登机重量超了怎么办 随身行李超重了怎么办 国际航班没带护照怎么办 派出所不开户籍怎么办 做火车没身份证怎么办 2018年怎么办户籍证明 一岁宝宝护照怎么办 户籍证明开不了怎么办 信用卡提不了额怎么办 信用卡提额诈骗怎么办 信用卡提额失败怎么办 身份证证件号错误怎么办 东西落在飞机上怎么办 乘高铁忘记带身份证怎么办 身份证丢坐火车怎么办 苏州市民a卡怎么办 集体户口户口页怎么办 网上不能买火车票怎么办 集体户口离婚时怎么办 没户口本怎么办结婚证 酒店没带身份证怎么办 住酒店拍身份证怎么办 手机取火车票要怎么办 香港酒店没登记怎么办 住宿未带身份证怎么办 长期住酒店怎么办暂住证 港澳通行过期了怎么办 异地社保卡怎么办出来 住酒店换洗衣服怎么办 住酒店车被划了怎么办 住酒店身份证丢失怎么办 没有社保卡医院怎么办 宾馆未带身份证怎么办 医保住院未登记怎么办 住酒店房卡丢了怎么办 社保卡读取不了怎么办 新社保卡没磁了怎么办 办社保新卡怎么办? 毕业登记表写错怎么办 我无工作怎么办社保 在机场取票掉了怎么办