最近在读洞庭散人的程序《基于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;
}
#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;
}