常常遇到这样的情况:用户自行输入一组整数数据。由于其长度不确定,如何对它进行操作呢?这就需要将这组数据转换成长度已知的数据了。 方法一(原始法): #include <iostream> using namespace std; int main() { const int N=1000; char con[N];//创建数组 char *tmp=con; cin.getline(con,N); //判断con数组中有多少个数字 int nCount=1; while(*tmp!='/0') { if(*tmp==' ') { nCount++; } tmp++; } int *nSort=new int[nCount];//创建int数组 tmp=con; char num[N]; //对int数组进行填充 for(int i=0;i<nCount;i++) { int j=0; while(*tmp!=' '&&*tmp!='/0') { num[j++]=*(tmp++); } num[j]='/0'; nSort[i]=atoi(num); tmp++; } for(int t=0;t<nCount;t++) { cout<<nSort[t]<<" "; } delete []nSort; return 0; } 方法二(串流类法): #include <iostream> #include <strstream> using namespace std; int main() { const int N=1000; char str[N]; cin.getline(str,N); istrstream iss(str,N); int a[N],count=0,i=0; while(iss>>a[i++]) count++; for(int j=0;j<count;j++) cout<<a[j]<<" "; return 0; } 方法三(vector法): #include <iostream> #include <vector> using namespace std; int main() { vector<int> a; int b; while(cin>>b) a.push_back(b); for(vector<int>::size_type i=0;i!=a.size();i++) cout<<a[i]<<" "; return 0; }