读书人

求教!关于sort的最后一个元素不能排列

发布时间: 2012-05-16 11:12:12 作者: rapoo

求教!关于sort的最后一个元素不能排列的问题,感谢那些帮助我们菜鸟的人!!
想用functional object传入sort实现一个sort,但是对最后一个元素无用。请指教,谢谢了!

sort.txt内容(Ch后面一个句号为最后一个字符):
I am from China. My mother land is Ch.

前面的我检查一下基本没什么问题,就是sort那个函数有问题,也有可能是编译器问题(vs2010)。
sort后的输出为(最后一个Ch没有按长短排列):
sorted sequence:
I am My is from land China mother Ch

C/C++ code
#include <iostream>#include <fstream>#include <strstream>#include <string>#include <vector>#include <functional>#include <algorithm>using namespace std;//define new lessThan functional objectclass lessThan{public:    bool operator() (const string &a,const string &b)    {return a.size()<b.size();}};//get the wordsvoid getWords(char* filename,vector<string> &vec){    char c='\0';    char buffer[300]={'\0'};    ifstream infile("sort.txt",ios::in);    if(!infile)    {        cerr<<"open error!"<<endl;        exit(1);    }    for(int i=0;(c=infile.get())!=EOF;)    {        if(c=='!'||c==','||c=='.')            continue;        buffer[i]=c;        i++;    }    infile.close();    istrstream strin(buffer,sizeof(buffer));    for(string temp;strin>>temp;)    {                vec.push_back(temp);    }        for(unsigned int i=0;i<vec.size();i++)    {        cout<<i+1<<": ";        cout<<vec[i]<<' ';    }    cout<<endl;}//display sorted vectorvoid display(vector<string> &vec){    for(int i=0;i<vec.size();i++)    {        cout<<vec[i]<<' ';    }    cout<<endl;}int main(){    vector<string> vect;    getWords("sort.txt",vect);    cout<<"original sequence: "<<endl;    display(vect);    sort(vect.begin(),vect.end(),lessThan());    cout<<"sorted sequence: "<<endl;    display(vect);    return 0;}














[解决办法]
strin>>temp;的时候,把后面的两百多个\0都弄到temp了。结果求size的时候,size为两百多。

读书人网 >C++

热点推荐