繁体   English   中英

如何从文本文件中的字符串中提取特定单词? C++

[英]How do I extract specific words from a string in a text file? c++

我的任务是从文本文件中取出一个字符串并计算其中的单词数。 我已经走了那么远,但现在我们必须能够获取某个数字并将该数字字显示到控制台。 假设我的字符串是“Hello World”,如果我输入“2”,它应该给我结果“World”。 我不太确定我的函数应该如何查找。 到目前为止,这是我的代码。

void getFileInfo(ifstream &inFile);
string words(ifstream &inFile);
int numOfWords(ifstream& inFile);


int main() {

    ifstream inFile;
    string sentence, fileName;
    int numCount, word;

    getFileInfo(inFile);
    numCount = numOfWords(inFile);
    inFile.clear();  // resets file pointer from the beginning
    inFile.seekg( 0 );
    sentence = words(inFile);

    cout << sentence << ": has " << numCount << " words in it" << endl;
    cout << "Enter a number to extract a word: ";
    cin >> word;


}

void getFileInfo(ifstream &inFile){

    string fileName;

    do{

        cout << "Please enter the filename: " << endl;
        cin >> fileName;

        inFile.open(fileName.c_str());

        if(!inFile){

            cout << "Invalid try again" << endl;

        }
    }while(!inFile);

}

string words(ifstream &inFile){

    string words, theWords;

    getline(inFile, words);
    cout << words;



    return theWords;

}

int numOfWords(ifstream& inFile){

    string fileName, words, str;
    int numCount =0;

    while(inFile >> words){
        ++numCount;
    }

    return numCount;


}

有什么建议?

提前致谢

我会为您的任务建议略有不同的代码。 首先,编写一些简单的辅助函数:

// Clear error flags (EOF, for example) and reset stream to the beginning.
void resetStream(ifstream& stream) {
    stream.clear();
    stream.seekg(0, ios_base::beg);
}

// Count the words in text file stream.
int getWordsCount(ifstream& stream) {
    int count = 0;

    while (stream) {
        string tmp;
        stream >> tmp;
        if (!tmp.empty()) ++count;
    }

    resetStream(stream);

    return count;
}

// Read word by specific number.
string getWordByNumber(int number, ifstream& stream) {
    string word;

    while (number--)
        stream >> word;

    resetStream(stream);

    return word;
}

现在,您可以轻松获取文件中的字数并按字数显示特定字词。 例如:

int main() {
    string fileName;
    cout << "Enter the file name: \n";
    cin >> fileName;

    ifstream stream(fileName);

    if (!stream)
        cout << "Failed to open file!" << endl;
    else {
        int totalCount = getWordsCount(stream);
        int currentCount = 0;

        cout << "Total words count: " << totalCount << "\n\n";

        do {
            cout << "Enter the word number (enter '0' to finish): ";
            cin >> currentCount;

            if (currentCount == 0) break;
            else if (currentCount > totalCount)
                cout << "Invalid value!\n";
            else {
                string wordByNumber = getWordByNumber(currentCount, stream);
                cout << "Word by number: " << "'" << wordByNumber << "'\n";
            }

            cout << "\n";
        }
        while (true);
    }

    return 0;
}

警告:此代码效率不高,我还没有对其进行过多测试。 如果您有任何问题,请务必写评论。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM