は、私は現在、テキストファイルから一度に1つの単語を読むためにこれを使用しています:C++テキストファイルからフレーズを読むにはどうすればよいですか?
int Dictionary::processFile(string file) { //receives a text file name to be read from user
string word;
int wordCount = 0;
ifstream fin;
fin.open(file.c_str());
if (fin.fail()) {
cout << endl;
cout << "Input file opening failed.\n";
return 0;
}
while (fin >> word) {
word = trimString(word); //trimString removes any symbols including spaces and words. only reads words.
exTree.ExtAvlTree_processNode(word); //processNode simply inserts the word into an avl tree. irrelevant to the question
wordCount++;
}
fin.close();
return wordCount;
}
は、どのように私はそれは言葉を処理する前に、一度に2-3の言葉を読むことができるように変更することができます。例えば、単語を読み込んでそれを処理した後、同じ単語を読み込みますが、次の隣接する単語を追加して、それがフレーズ(2ワードからなる)になると同じ2ワードを読み込みますが、次の3ワードを別のフレーズに追加します。
余分な質問、上記の場合はacheiveableです:
iはスペースを削除から機能をtrimStringどのように停止することができますし、シンボルだけを削除しますか?
これは、トリム文字列関数です:
string Dictionary::trimString(string input){
stringstream ss;
for (int x = 0; x < (int) input.size(); x++) {
if(isalpha(input[x])){
ss << input[x];
}
}
if (ss.str().length() > 0) {
return ss.str();
} else {
return "";
}
}
を分離シンボルを削除しますか? " - >はもはやスペースシンボルではありませんか? – ForceBru
@ForceBruどうすれば免除できますか? – nanjero05
*「トリムストリング関数がスペースを削除するのを止めてシンボルを削除するにはどうすればいいですか?」* ... 'fin >> word'は抽出を停止するためのデリミネーターとしてスペースを使用しません。だから、なぜそれが何もないときに単語のスペースをチェックしたいのですか? –