C ++如何从文本文件中读取短语?

时间:2016-05-18 08:07:02

标签: c++

我目前正在使用它来从文本文件中一次读取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 "";
    }
}

1 个答案:

答案 0 :(得分:0)

您可以将读取的每个单词添加到std :: vector中,然后可以使用for循环以您描述的方式使用它们。下面的代码是您可以做的事情的示例

com_content

在示例中,我假设您希望短语中的单词是空格分隔的