用c++中STL实现对于TXT文件中的文字进行提取,并按照词频输出到TXT文件中

用stl将TXT文件中的文字提取出来,然后利用再把这些文字按照词频排序,
最后把它们输出到另外一个TXT文件中。
自己完成了一部分,希望有个大神能看懂我的思路,帮忙完成一下程序。

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
typedef struct T_WORD
{
    string strWord;
    int freq;
}MyWord;
class Fileprocess
{
private:
    vector<MyWord>m_vector;
    string strfilesrc;
    string strfiledst;
public:
    Fileprocess(string src, string dst);
    void P();
    void PushVector(string str);
    void WriteF();
    void Split(char*p, char*pword);
};
#include "Fileprocess.h"
Fileprocess::Fileprocess(string src, string dst)
{
    strfilesrc = src;
    strfiledst = dst;
}
void Fileprocess::P()
{
    FILE*fp = fopen(strfilesrc.c_str(), "r");
    char szbuf[50] = { '\0' };
    char szbuf1[50] = { '\0' };
    string str;
    while (!feof(fp))
    {
        memset(szbuf, '/0', 50);
        memset(szbuf1, '/0', 50);
        //fscanf(fp, "%s", szbuf);
        cout << szbuf;
        Split(szbuf, szbuf1);
        str = szbuf1;
        PushVector(str);
    }
    fclose(fp);
}


void Fileprocess::PushVector(string str)
{
    bool flag = false;
    vector<MyWord>::iterator iter;
    MyWord myword;
    for (iter = m_vector.begin(); iter != m_vector.end(); iter++)
    {
        myword = (MyWord)*iter;
        if (myword.strWord == str)
        {
            myword.freq++;
            *iter = (MyWord)myword;
            flag = true;
        }
    }
    if (flag == false)
    {
        myword.strWord = str;
        myword.freq = 1;
        m_vector.push_back(myword);
    }

}


void Fileprocess::WriteF()
{
    FILE*fw = fopen(strfiledst.c_str(), "w");
    vector<MyWord>::iterator iter;
    MyWord myword;
    for (iter = m_vector.begin(); iter != m_vector.end(); iter++)
    {
        myword = (MyWord)*iter;
        fprintf(fw, "%s &d\n", myword.strWord.c_str(), myword.freq);
    }
    fclose(fw);
}


void Fileprocess::Split(char*p, char*pword)
{
    char *pstr;
    char q = NULL;
    q = strchr(pstr, '/');
    if (q == NULL)
        return;
    pstr = p;
    *p = '\0';
    strcpy(pword, pstr);
}
#include "Fileprocess.h"
#include <iostream>
using namespace std;

int main()
{
    string filesrc = "d:\\vs2017\\199802.txt";
    string filedst = "d:\\vs2017\\result.txt";
    Fileprocess fileprocess(filesrc, filedst);
    fileprocess.P();
    fileprocess.WriteF();
}

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问