以下是一个使用 MFC 框架实现快速将文本文件内容去重的示例代码:

#include <afxwin.h>
#include <iostream>
#include <fstream>
#include <unordered_set>

class CFileDuplicateRemover : public CWinApp
{
public:
    virtual BOOL InitInstance();
};

BOOL CFileDuplicateRemover::InitInstance()
{
    CWinApp::InitInstance();

    // 打开文件对话框
    CFileDialog fileDialog(TRUE, NULL, NULL, OFN_FILEMUSTEXIST | OFN_HIDEREADONLY, _T("文本文件 (*.txt)|*.txt||"));
    if (fileDialog.DoModal() == IDOK)
    {
        CString filePath = fileDialog.GetPathName();

        // 打开文件
        std::ifstream inputFile(filePath);
        if (!inputFile)
        {
            AfxMessageBox(_T("无法打开文件!"));
            return FALSE;
        }

        // 去重
        std::unordered_set<CString> uniqueLines;
        CString line;
        while (inputFile >> line)
        {
            uniqueLines.insert(line);
        }

        // 关闭文件
        inputFile.close();

        // 将去重后的内容写入新文件
        CString outputFilePath = filePath.Left(filePath.ReverseFind(_T('.'))) + _T("_nodup.txt");
        std::ofstream outputFile(outputFilePath);
        if (!outputFile)
        {
            AfxMessageBox(_T("无法创建输出文件!"));
            return FALSE;
        }

        for (auto it = uniqueLines.begin(); it != uniqueLines.end(); ++it)
        {
            outputFile << *it << std::endl;
        }

        // 关闭文件
        outputFile.close();

        AfxMessageBox(_T("去重完成!"));
    }

    return FALSE;
}

CFileDuplicateRemover theApp;

此代码使用了 MFC 的 CFileDialog 类来打开文件对话框,让用户选择要去重的文本文件。然后使用 std::ifstreamstd::ofstream 来读取和写入文件内容。使用 std::unordered_set 来存储去重后的内容,并使用 CString 作为存储文本行的数据类型。

去重后的内容将写入一个新的文件,新文件名为原文件名加上 '_nodup' 后缀。例如,如果原文件名为 'example.txt',则新文件名为 'example_nodup.txt'。

注意:此代码仅适用于 Windows 平台,因为它依赖于 MFC 框架。如果您想在其他平台上运行,请考虑使用其他 C++ 库,如 STL 和 Boost。

MFC 去重文本文件:快速高效的代码示例

原文地址: https://www.cveoy.top/t/topic/qyRh 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录