从字符串c ++中删除单引号字符

时间:2012-03-21 19:55:50

标签: c++

我已经查看了各种方法,包括string.erase / ispunct等,我不能让它适用于我的代码。

我的代码如下:

ifstream infilei("test.txt")

**Second part of code......**

while ( !infilei.eof() )
{
    string wordlist;
    infilei >> wordlist;
    inputlist.push_back(wordlist);
}

text.txt包含逗号,单引号,双引号等,我需要删除它们。

在显示infilei >> wordlist;的地方,我尝试使用if语句删除带有“”等的字符串,但它仍然不会删除单引号或双引号。是否有其他方法或者我可以设置字符串.erase在某个ascii范围之上?并且是在push_back期间还将字符串发送到小写的方法吗?

谢谢

2 个答案:

答案 0 :(得分:1)

您应该像if(str[i]=='\"' or str[i]=='\'')那样编写if语句,而小写应该这样做:

std::transform(str.begin(), str.end(), str.begin(), ::tolower);

答案 1 :(得分:1)

这段代码将清除mesy_string:

中的每个“,。”
#include <iostream>
#include <algorithm>
#include <string>

using namespace std;

//Chars to be removed
bool has_chars(char c){
  if(c=='\"' || c=='.' || c==',' || c=='\'')
    return true;
  else
    return false;  
}

int main () {
  string messy_string="dfffsg.nfgfg,nsfvfvbnf\"nsdfnsdf\'ssvbssvns\"hhhfh\"";

  cout<< messy_string<<endl;

  remove_if (messy_string.begin(), messy_string.end(), has_chars);

  cout<< messy_string<<endl;  
  return 0;
}

您应该能够根据自己的需要进行修改。