由于我的MFC程序处于unicode环境,因此下面的代码无法正常工作。
::WriteFile(hFile, TEXT("123456"), lstrlenW(TEXT("123456")), &dwByte, nullptr);
::CloseHandle(hFile);
结果是“123”,应该是“123456”
我在互联网上发现Unicode BOM可以解决这个问题。 所以我修改了我的代码,如下所示。
WORD Unicode = 0xfeff; // UNICODE BOM
::WriteFile(hFile, &Unicode, 2, &dwByte, nullptr);
::WriteFile(hFile, TEXT("123456"), lstrlenW(TEXT("123456")), &dwByte, nullptr);
::CloseHandle(hFile);
然而,它没有任何区别。
似乎这是一个简单的问题,但我很想找到解决方案。
任何想法都会受到欢迎。提前谢谢。
答案 0 :(得分:4)
Writefile
不写“text”:它写“Bytes”。
lstrlenW
会返回wchar_t
的数量。
您将sizeof(wchar_t)
乘以,以便为第三个参数提供“字节数来写”
答案 1 :(得分:2)
您不希望使用lstrlenW
来确定要写入的数据量 - 您需要告诉WriteFile
要写入的字节数,而不是代码点的数量。现在,你告诉它6,这是3个字符的足够字节。