我目前正在使用它来从文本文件中一次读取1个单词:
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个下一个单词添加为另一个短语。
额外的问题,如果以上是可以实现的:
如何阻止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 "";
}
}
答案 0 :(得分:0)
您可以将读取的每个单词添加到std :: vector中,然后可以使用for循环以您描述的方式使用它们。下面的代码是您可以做的事情的示例
com_content
在示例中,我假设您希望短语中的单词是空格分隔的