我们经常需要输入一串数,而数据个数未知。这时候就不能以数据个数作为输入是否结束的判断标准了。
这种情况下,我们可以用以下两种方法输入数据。
方法一:判断回车键(用getchar()=='\n'即可判断)
//以整数为例
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std; int main(){
vector<int> v;
int tmp;
while(cin>>tmp){
v.push_back(tmp);
if(getchar() == '\n')
break;
}
//输出
for(int val:v){
cout<<val<<endl;
}
return ;
}
//以字符串为例
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std; int main(){
vector<string> v;
string tmp;
while(cin>>tmp){
v.push_back(tmp);
if(getchar() == '\n')
break;
}
//输出
for(string val:v){
cout<<val<<endl;
}
return ;
}
方法二:用istringstream流对象处理
//以字符串为例
#include<iostream>
#include<sstream> //istringstream
#include<string>
using namespace std;
int main()
{
//string str="I like wahaha! miaomiao~";
string str;
cin>>str;
istringstream is(str);
string s;
while(is>>s)
{
cout<<s<<endl;
}
}
//以整数为例(先将一行数当做string输入,再进行转换)
#include<iostream>
#include<sstream> //istringstream
#include<string>
using namespace std;
int main()
{
//string str="0 1 2 33 4 5";
string str;
getline(cin,str);
istringstream is(str);
int s;//这样就转换为int类型了
while(is>>s)
{
cout<<s+<<endl;//现在已经可以运算了
}
}