最近在讀洞庭散人的程式《基於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;
}