面试:C++输入数据

  最近在做笔试题,相比与leetcode,笔试题都是要自己写输入输出的,每次在这里都浪费了不少时间,这篇文章总结了一下在C++中怎么向数组中输入数据。

1. 先输入数组大小,然后输入数据数据,中间以空格或者'\n'字符隔开

 1 /*
 2  * 两种输入方式
 3  * 3 ↙
 4  * 1 2 3 ↙
 5  *
 6  * 3 ↙
 7  * 1
 8  * 2
 9  * 3
10  * ↙
11  */
12 vector<int> inputArray(){
13     int size = 0;
14     cin >> size;
15     vector<int> inputs;
16     for(int i=0;i<size;i++){
17         int tmp;
18         cin >> tmp;
19         inputs.push_back(tmp);
20     }
21     return inputs;
22 }

2、输入以','字符分割的数据,思路将输入保存为字符串,然后转换为具体的数据

 1 // 1,2,3,4,5 ↙
 2 vector<int> inputArray2(){
 3     string inputs;
 4     cin >> inputs;
 5     //split
 6     vector<string> splits;
 7     int start = 0;
 8     for(size_t i=0;i<inputs.size();i++){
 9         if(inputs[i] == ','){
10             splits.push_back(inputs.substr(start,i-start));
11             start = i+1;
12         }
13     }
14     if(start != (int)inputs.size()){
15         splits.push_back(inputs.substr(start));
16     }
17     vector<int> res;
18     for(string s:splits){
19         res.push_back(std::stoi(s));
20     }
21     return res;
22 }

3.输入无限长度的数据,数据之间用空格分开,回车结束

 1 // 输入无限长度的数组 1 2 3 4 5 6 ...
 2 vector<int> inputArray3(){
 3     vector<int> inputs;
 4     int a;
 5     do{
 6         cin >> a;
 7         inputs.push_back(a);
 8     }while(getchar() != '\n');
 9     return inputs;
10 
11 }

4. 和方法1类似,输入二维数组

 1 vector<vector<int>> inputMatrix(){
 2     int m,n;
 3     cin >> m >> n;
 4     vector<vector<int>> matrix(m,vector<int>(n,0));
 5     for(int i=0;i<m;i++){
 6         for(int j=0;j<n;j++){
 7             int a;
 8             cin >> a;
 9             matrix[i][j] = a;
10         }
11     }
12     return matrix;
13 }

 

posted @ 2017-08-02 22:51  wxquare  阅读(1222)  评论(0编辑  收藏  举报