关于C++字符串排序
为了让大家看的速度而且明白。我专门写了一个很简单的程序来说明问题。
#include<string>
#include<iostream>
using namespace std;
void main()
{
string name="what's up dude";
int i = 0;
while(name[i]!='\0')
{
cout<<name[i];
if(name[i++]==' ')
{
cout<<endl;
}
}
}
这个程序是输出这个字符串,并且一行显示一个单词。如果直接cout<<name;就会显示在一行。
我想问的问题是如何给字符串name里面的单词按照单词长短排序(从小到大);输出结果为
up
dude
what's
请问各路高手有没有简单的方法实现这个功能。希望对一大段文字同样适用的程序。谢谢
[解决办法]
#include<string>#include<iostream>#include<sstream>#include<vector>#include<algorithm>using namespace std;bool cmp(string& a, string& b){ if(a.size() < b.size()) { return true; } else { return false; }}void main(){ string name="what's up dude"; istringstream stream(name); string word; vector<string> vc; while(stream>>word) { vc.push_back(word); } sort(vc.begin(), vc.end(), cmp); for(int i = 0; i < vc.size(); ++i) { cout<<vc[i]<<endl; }}