最近在读洞庭散人的程序《基于K-means文本聚类》,作为C++学习的起航船。发现他的代码无法运行。而且代码中有错误。于是就在此开博更正。

 

代码
#include <iostream>
#include 
<vector>
#include
<algorithm>
#include
<string>
#include
<cmath>
#include 
<locale>
using namespace std;
bool myfunction(string s1,string s2)
{
    
if(s1.compare(s2))
    {
        
return true;
    }
    
return false;
}
string mytolower(string src)
{
    locale loc;
    
string result="";
    
for (size_t i=0; i<src.length(); ++i)
    {
        
//cout<<tolower(src[i],loc);
        result.append(1,tolower(src[i],loc));
    }
    
return result;

}

int main ()
{
  
  
string s1="原地转圈的驴子.TestTest\n";
  
string s2="原地转圈的驴子.TestTest2\n";
  
  vector
<string> strVec;
  vector
<string> ::iterator it;
  strVec.push_back(s1);
  strVec.push_back(s1);
  strVec.push_back(s2);
  strVec.push_back(s2);

  cout
<<"before transform operation"<<endl;
  
for(int i=0;i<strVec.size();i++)
  {
      cout
<<strVec[i]<<endl;
  }

  transform(strVec.begin(),strVec.end(),strVec.begin(),mytolower);
  
  
cout
<<"before unique operation"<<endl;    
  
for(int i=0;i<strVec.size();i++)
  {
      cout
<<strVec[i]<<endl;
  }
  
 it
= unique(strVec.begin(),strVec.end(),myfunction);
 strVec.resize(it
-strVec.begin());
 cout
<<"after unique operation"<<endl;
  
for(int i=0;i<strVec.size();i++)
  {
      cout
<<strVec[i]<<endl;
  }
 
  
int end;
  
  
  scanf(
"%d",&end);
  
return 0;
}

 

 

posted on 2010-08-18 16:25  finallyly  阅读(2376)  评论(10编辑  收藏  举报