如何使:WriteFile在UNICODE环境下工作
How to make ::WriteFile work in UNICODE circumstance?
下面的代码无法正常工作,因为我的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个字符来说是足够的字节。
相关文章:
- QSqlquery prepare()和bindvalue()不工作
- 导入库可以跨dll版本工作吗
- 枚举环境变量的惯用C++14/C++17方法
- 以螺旋方式打印矩阵的程序.(工作不好)
- 对象指针在c++中是如何工作的
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- C++为线程工作动态地分割例程
- 为什么我的 std::ref 无法按预期工作?
- 布尔比较运算符是如何在C++中工作的
- SampleConsensusPrerejective(ext.RANSAC)是如何真正工作的
- 不确定要在我的main中放入什么才能使我的代码正常工作
- 为什么std::condition_variable notify_all的工作速度比notify_one快(对于随机请
- Qt::D irectConnection在多线程环境中使用时如何工作?
- DLL函数在VBA环境中不起作用,但在Excel VBA中工作
- 通过 PATH 环境启动程序.具有正确工作目录的变量
- 如何使:WriteFile在UNICODE环境下工作
- std::get_time和其他语言环境功能在Windows上无法正常工作
- NReco.PdfGenerator 1.1.7不能在托管环境中工作