私はファイルを読み込んでその内容を文字列の中に格納しました。今、私はファイルに含まれているユニークな単語の数を探したい。文字列イテレータがend()を見つけることができません
私は
map< string , int > wordCount;
を作成し、文字列内のファイルの内容を入れて、彼は
void wordCounter(){
string content;
file.seekg(0, ios::end);
content.resize(file.tellg());
file.seekg(0, ios::beg);
file.read(&content[0] , content.size());
ostringstream os;
for(string::iterator current , next = content.begin() ; current != content.end() || next != content.end();){
if(*next == ' ' || *next == '\r\n'){
wordCount[ os.str() ]++;
while(next != content.begin() && (*next == ' ' || *next ==' \r\n')){
next++;
}
os.str(" ");
current = next;
}else{
if(*next <= 'Z' && *next >='A')
os << char(*next - ('Z'-'z'));
else
os << (*next);
next++;
}
}
}
をマップしかし、これは無限ループにつながるに追加機能を作成しました。 itratorは文字列のend()を見つけることができないようです。なぜこのようなことが起こっているのですか?私は合理的な答えを見つけることができません。ありがとう
mao?あなたは地図ですか? – jonathanGB
oh、typo、thanksありがとうございます – Abdir
その全体的な操作は過度に複雑に思えます。 'string word; while(ファイル>>単語){wordCount [単語] ++; } 'は、ファイル内の単語の出現を数えます。ただし、句読点を無視したい場合はもう少し作業が必要です。 –