C++字串處理:批量去重,以及大寫變小寫

來源:互聯網
上載者:User

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

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.