2017-12-11 3 views
-4

誰かがこのコードを教えてくれますか?私はfind_first_ofが何であるか理解していません!= string :: npos ...これは私の言葉が欲しいので私のテキストのすべての句読点を取り除く方法です...しかし、私は本当にすべてを理解していません...私のコードに助けがありました。カントが分かります! (マップから句読点を取り除く)

while (file >> word) 
{ 
    // Remove punctuation. 
    int index; 
    while ((index = word.find_first_of(".,!?\\;-*+")) != string::npos) 
    { 
     word.erase(index, 1); 
    } 

    ++word_count[word]; 
+2

[documentation](http://en.cppreference.com/w/cpp)を参照すると役に立ちます。 – user0042

答えて

0

あなたはであなたが必要なすべてを見つけるでしょう:あなたはこのリンクで見れば、この関数は、それが探しているのいずれかの文字を発見した場所の文字列内の位置を返しfind_first_of http://www.cplusplus.com/reference/string/string/find_first_of/

。これらの文字が見つからない場合は、string::nposを返します。

(関数はstring::nposを返すとき)だからあなたのコード内のループはで、単語内の文字.,!?\\;-*+の1を探し、それはもはやこれらの文字のいずれかを検出しなくなるまで、それらを1(word.erase(index, 1))ずつを削除します私たちはループを終了します。

+1

ありがとう!素晴らしい説明! –

+0

トピックを閉じるための解決策として自分の答えをタグ付けする必要があります。あなたの仕事に幸運を祈る! – oldabl

+0

申し訳ありません。 –

関連する問題