我正在尝试使用 WriteFile()
将 wchar_t
类型的字符串写入文件。这是代码:
void main()
{
wchar_t dataString[1024];
HANDLE hEvent, hFile;
DWORD dwBytesWritten, dwBytesToWrite;
hFile = CreateFileW(L"e:\\test.txt", GENERIC_WRITE | GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if(hFile == INVALID_HANDLE_VALUE)
{
printf("Invalid file handle: %d\n", GetLastError());
return;
}
wcscpy(dataString, L"Hello");
dwBytesToWrite = wcslen(dataString);
WriteFile(hFile, (LPVOID )dataString, dwBytesToWrite, &dwBytesWritten, NULL);
CloseHandle(hFile);
}
我希望将字符串 Hello
写入文件。然而文件内的输出是这样的:
H e l
知道为什么它没有将整个字符串 Hello
写入文件吗?
最佳答案
dwBytesToWrite = wcslen(dataString);
不返回字节数,而是返回字符数。当您使用宽字符(每个字符 2 个字节)时,只有其中的一些字符会被写入文件。
试试这个:
dwBytesToWrite = wcslen(dataString) * sizeof(wchar_t);
关于c++ - WriteFile() 可以用来将 wchar_t 字符写入文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37537768/