下面的代码无法正常工作,因为我的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);
然而,这并没有什么区别。
这似乎是一个简单的问题,但我正在寻找解决方案。
任何想法都非常受欢迎。提前谢谢。
Writefile
不写"text":它写"Bytes"。CCD_ 2返回CCD_。您可以乘以sizeof(wchar_t)
,以便给第三个参数"要写入的字节数"
您不希望使用lstrlenW
来确定要写入的数据量——您需要告诉WriteFile
要写入的字节数,而不是代码点的数量。现在,您告诉它6,这对于3个字符来说是足够的字节。