c++ - WriteFile() 可以用来将 wchar_t 字符写入文件吗?

标签 c++ writefile wchar

我正在尝试使用 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/

相关文章:

c++ - 在 c 结构上调用默认构造函数

java - 将 Java txt 文件保存到文件夹

java - 如何通过读取文件并将其写入另一个文件来为我的类(class)编写单元测试?

c++ - 将 int 转换为 wchar_t 的正确方法是什么?

c - 使用数组 wchar 时出错

c++ - 我怎样才能在 constexpr 函数中有一个临时变量?

c++ - 为什么 std::is_constructible 在直接上下文中停止?

c++ - 向第三方提供库时,C++ 包含文件是否存在安全漏洞?

java - 从文本文件读取数据并创建对象

c++ - WinAPI 中的 sz 和 pwsz 前缀