求教!关于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为两百多。