统计一个词出现的次数(英文)

统计一个词出现的次数(英文)

#include 
#include 
#include 
#include 
#include 

using namespace std;

// 定义一个结构体表示单词及其出现频率
struct Record
{
    string _word;       // 单词
    int _frequency;     // 出现频率
};

class Dictionary
{
public:
    // 读取文件中的单词并统计出现次数
    void read(const std::string &filename);

    // 将统计结果存储到文件中
    void store(const std::string &filename);

private:
    vector<Record> _dict;   // 存储单词及其出现频率的向量
};

void Dictionary::read(const std::string &filename)
{
    // 打开指定文件
    fstream fs(filename);
    if (!fs)
    {
        cerr << "fstream open file failed" << endl;
        exit(EXIT_FAILURE);
    }

    string line;
    string word;
    while (getline(fs, line))    // 按行读取文件内容
    {
        istringstream iss(line);    // 将字符串转换为输入流以方便按空格分割单词
        while (iss >> word)     // 按空格分割单词
        {
            bool showFirstTime = true;  // 标记是否是第一次出现该单词
            for (auto &w : _dict)   // 遍历已有单词列表,查找是否已经出现过该单词
            {
                if (w._word == word)    // 如果已经出现过该单词
                {
                    ++w._frequency;     // 出现次数加1
                    showFirstTime = false;  // 标记为不是第一次出现该单词
                    break;
                }   
            }   
            if (showFirstTime)  // 如果是第一次出现该单词
            {
                Record rd;      // 新建一个记录并加入列表中
                rd._word = word;
                rd._frequency = 1;
                _dict.push_back(rd);
            }   
        }   
    }   

    fs.close();     // 关闭文件
}   

void Dictionary::store(const std::string &filename)
{
    // 打开指定文件
    fstream fs(filename);
    if (!fs)
    {
        cerr << "fstream open file failed" << endl;
        exit(EXIT_FAILURE);
    }

    for (auto &w : _dict)   // 遍历单词列表,并将结果写入文件中
    {
        fs << w._word << " " << w._frequency << endl;
    }

    fs.close();     // 关闭文件
}

int main(int argc, char *argv[])
{
    Dictionary dict;

    dict.read("filename.txt");    // 读取指定文件中的单词
    dict.store("store.txt");           // 将结果存储到指定文件中

    return 0;
}

可以实现字词出现的次数,但是没有办法。而且要提前建立好储存文件。

你可能感兴趣的:(小问题,c++,算法,开发语言)