2012-03-21 14 views
0

string.erase/ispunctなどのさまざまなメソッドを見てきました。次のように文字列C++から一重引用符を削除する

私のコードは次のとおりです。

ifstream infilei("test.txt") 

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

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

TEXT.TXTはコンマ、単一引用符、二重引用符などが含まれていると私はそれらを削除する必要があります。

ここでは、私はifステートメントを使って '' 'などで文字列を削除しようとしましたが、まだ一重引用符または二重引用符は削除されません。特定のASCIIの範囲以上も一back時に小文字に文字列を送信する方法です

あなたはそうif(str[i]=='\"' or str[i]=='\'')のようなif文を記述する必要があり、小文字の場合と同様に、これはそれを行う必要があります

+0

「if文」を試してみてください。 –

+0

私はこれを試しましたが、シグナルまたは二重引用符は削除されません: while(!infilei.eof()){string wordlist; while(wordlist [i] == '。' || wordlist [i] == '、' || wordlist [i] == '、' || wordlist [i] == '\' '){wordlist.erase(' wordlist [i] == '' 'ありがとうございました – MacKey

答えて

1

ありがとう!?:

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

)) \t {\t \t列単語リスト、 \t \t一方(infilei >>ワードリスト) \t \t { \t \t \t for(int i = 0; i MacKey

+0

私はこれを試しましたが、信号または二重引用符は削除されません: \t while(!infilei.eof(i);}} inputlist.push_back(wordlist); – MacKey

+0

std :: transform(str.begin()、str.end()、str.begin()、:: tolower);完璧に動作します。 – MacKey

1

このコードはすべて "、、。 'from 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; 
} 

必要に応じて変更する必要があります。

+0

が試したが役に立たなかった。ご協力ありがとうございました。 – MacKey

関連する問題