我已经查看了各种方法,包括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期间还将字符串发送到小写的方法吗?
谢谢
答案 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;
}
您应该能够根据自己的需要进行修改。