#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main()
{
string text;
const string separators=" ,./"/n";
const int max_words=1000;
string words[max_words];
string* pwords[max_words];
cout<<endl<<"Enter a string terminated by #:"<<endl;
getline(cin,text,'#');
int start=text.find_first_not_of(separators);
int end;
int word_count=0;
while(start!=string::npos&&word_count<max_words)
{
end=text.find_first_of(separators,start+1);
if(end==string::npos)
end=text.length();
words[word_count]=text.substr(start,end-start);
pwords[word_count]=&words[word_count];
word_count++;
start=text.find_first_not_of(separators,end+1);
}
cout<<endl<<"The words have intered over.";
int lowest=0;
for(int j=0;j<word_count-1;j++)
{
lowest=j;
for(int i=j+1;i<word_count;i++)
if(*pwords[i]<*pwords[lowest])
lowest=i;
if(lowest!=j)
{
string* ptemp=pwords[j];
pwords[j]=pwords[lowest];
pwords[lowest]=ptemp;
}
}
cout<<endl<<"words sorted over.";
for(int i=0;i<word_count;i++)
//cout<<endl<<words[i];
cout<<endl<<*pwords[i];
cout<<endl;
system("PAUSE");
return 0;
}
for(int j=0;j<word_count-1;j++)
{
lowest=j;
for(int i=j+1;i<word_count;i++)
if(*pwords[i]<*pwords[lowest])
lowest=i;
if(lowest!=j)
{
string* ptemp=pwords[j];
pwords[j]=pwords[lowest];
pwords[lowest]=ptemp;
}
}
其中的i<word_count写成了j<word_count出错。
找了很久都没找出来。
输入事例:
Enter a string terminated by #:
In this world nothing can be said to be certain,except death and taxes.#
输出:
In
and
be
be
can
certain
death
except
nothing
said
taxes
this
to
world