使用 Windows API 处理 txt 文件的内容

Handle the content of a txt file using windows API

本文关键字:文件 txt Windows API 处理 使用      更新时间:2023-10-16

我按如下方式使用代码片段来获取文本文件的内容。但是,末尾的缓冲区buff在一个地方只有数字 8,没有其他任何东西。正在打开的文件具有单词"项目"作为唯一内容。我如何处理(即打印)我应该收到的内容或结果?以下代码有什么问题:

        TCHAR buff[20];
        DWORD dwNumRead;
        CString finalPath = path + L"\" + fileName.c_str();
        HANDLE hfile=CreateFile(finalPath ,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
        if(ReadFile(hfile,buff,20,&dwNumRead,NULL))
        {
            CString temp;
            temp.Format(L"%s",&buff[0]);
            ATLTRACE(L"Success %s", temp);
        }
        CloseHandle(hfile);

问题是您正在尝试打印MFC CString,它由带有%s宏的宽字符组成。您需要 %S 宏来打印宽字符。

这有效:

    char buff[20] = "";
    DWORD dwNumRead;
    CString finalPath = path + L"\" + fileName.c_str();;
    HANDLE hfile=CreateFile(finalPath ,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
    if(ReadFile(hfile,buff,20,&dwNumRead,NULL))
    {
        CString temp = buff;
        ATLTRACE("Success %S", temp);
    }
    CloseHandle(hfile);

否则,请使用以下额外的 C++ defs 在 unicode 中编译程序。统一码,_UNICODE