我使用如下代码片段来获取文本文件的内容。但是,最后的缓冲区buff
在一个地方只有8号而没有别的。正在打开的文件中包含“Project”作为唯一内容。我如何处理(即打印)我应该收到的内容或结果?以下代码有什么问题:
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);
答案 0 :(得分:2)
问题是您正在尝试打印由%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