簡體   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