我正在尝试使用WriteFile
在一个. TXT文件中写入一个简单的文本。
// For WriteFile fuction
BOOL writeFile;
LPCVOID textToWrite = L"SakyLabs: Hello, MDE.";
DWORD numberOfBytes = (DWORD)wcslen(textToWrite);
DWORD numberOfBytesWritten;
numberOfBytes
是基于微软的from here。
接下来,WriteFile函数:
writeFile = WriteFile(createFile, textToWrite, numberOfBytes, &numberOfBytesWritten, NULL);
我正在从以前的CreateFileW
调用中获取createFile。另外,我正在使用Unicode函数。WriteFile
可以工作,但是我只得到文件中写的这部分文本:
S a k y L a b s : H
我哪里做错了?
1条答案
按热度按时间56lgkhnf1#
问题是你正在创建一个宽字符串
L"..."
。每个WCHAR
都是两个字节长--因为Windows对宽字符串使用UTF-16。wcslen
计算WCHAR
的个数,而不是字节数。将字符串长度乘以
WCHAR
的大小:或者使用窄字符串(如果实际使用非ASCII,最好使用UTF-8编码):