昨天做了一个笔试,题目不是很难,但却在输入上卡了许久。输入的要求是:
个数未知的一组数组
用例1:
1 2 3 4 5
用例2:
11 22 33 44 55 66 77 88
要把输入的数字提取出来,保存在vector中,方便后面对数据进行操作。
方法1、判断数字后面的字符是否是回车\n
方法2、用string流(istringstream)来处理输入
代码实现:
#include <iostream>
#include <vector>
#include <string>
#include <sstream>
using namespace std;
// 输入一行个数未知的数字,方法1:判断数字后面的字符是否是回车\n
void test01(){
vector<int> v;
int num;
while (cin >> num){
v.push_back(num);
char ch = getchar();
if (ch == '\n') break;
}
for (int i : v){
cout << i << " ";
}
cout << endl;
}
// 输入一行个数未知的数字,方法2:用string流来接收数据
void test02(){
string str;
getline(cin, str);
istringstream iss(str);
vector<int> ret;
int tmp;
while (iss >> tmp){
ret.push_back(tmp);
}
for (int i : ret){
cout << i << " ";
}
cout << endl;
}
int main(){
//test01();
test02();
system("pause");
return 0;
}
运行结果:
11 22 33 44 55 66 77 88
11 22 33 44 55 66 77 88
请按任意键继续. . .