gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 03:34:44 27 4
gpt4 key购买 nike

我使用如下代码片段来获取文本文件的内容。但是最后的缓冲区 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);

最佳答案

问题是您正在尝试打印由带有 %s 宏的宽字符组成的 MFC CString。您需要 %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,_UNICODE

关于c++ - 使用 Windows API 处理 txt 文件的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11313630/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com