要求输入一个数字n,然后再输入n个字符串。
int n;
cin>>n;
fflush(stdin);
while(n--)
getline(cin,s);
下面是一个完整的程序。需要把n个字符串中的数字提取出来组成数,然后把这n个数排序。
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
#include <algorithm>
#include <functional>//sort()函数中排序方法用less<int>()是从小到大
using namespace std;
int main()
{
int maxLine;
cin>>maxLine;
fflush(stdin);//一定要清除缓存,因为输入后敲的回车已经占了一行
vector<string> inputStr;
ostream_iterator<string> output(cout," ");
for(int k=0;k<maxLine;k++)
{
string temp;
getline(cin,temp);//输入字符串
inputStr.push_back("");//相当于初始化,否则没inputStr[k]
for(int i=0;i<temp.size();i++)
{
if(!isalpha(temp[i]))
{ //把从temp[i]开始的1个字符加到inputStr[k]
inputStr[k].append(&temp[i],1);
}
}
if(inputStr[k].size==0)
{inputStr.pop_back();k--;maxLine--;}
}
//把数字字符串变成数字
vector<int> inputNum;
for(int k=0;k<maxLine;k++)
{
int temp; //字符串给stream,再传给int类型的temp
std::stringstream stream;
stream<<inputStr[k];
stream>>temp;
inputNum.push_back(temp);
stream.clear();//清空,下个字符串继续使用
}
//按降序排列greater<int>()
sort(inputNum.begin(),inputNum.end(),greater<int>());
for(int i=0;i<inputNum.size();i++)
{
cout<<inputNum[i];
cout<<endl;
}
return 0;
}