【问题标题】:How can I copy a CHAR Variable to WCHAR Variable in C++如何在 C++ 中将 CHAR 变量复制到 WCHAR 变量
【发布时间】:2011-08-06 19:09:00
【问题描述】:

我想将 CHAR 文件转换为 UNICODE 文件。 我以 CHAR 文件类型逐个字符读取文件,然后将此字符保存在 CHAR 变量中,然后我想将此 CHAR 变量复制到 WCHAR 变量,然后将 WCHAR 变量写入 UNICODE 文件。

这里是代码:

#include<Windows.h>
#include<tchar.h>

int _tmain(int argc, LPCTSTR argv[])
{
    HANDLE hInfile, hOutfile;
    CHAR f1; 
    WCHAR f2;   
    DWORD Rd, Wrt; 
    INT i;
    CreateFile(argv[1], GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, NULL,NULL);
    CreateFile(argv[2], GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL,NULL);
    while ((ReadFile(hInfile, &f1, sizeof(CHAR), &Rd, NULL) && Rd>0)) 
    {
        **_tccpy(f2, f1);**
        WriteFile(hOutfile, &f2, Rd, &Wrt, NULL);
    }

    CloseHandle(hInfile);
    CloseHandle(hOutfile);

}

粗体代码是问题,如何将 CHAR 变量复制到 WCHAR 变量。 _tccpy 函数和 strcpy 函数不能这样做,因为它们的原型都是 char 或 wachar。

【问题讨论】:

  • 你为什么首先将值读取为CHAR
  • 更好的选择是将变量定义为类型TCHAR,然后以正确的格式从数据文件中读取值开始。 TCHAR#defined by windows.h 是正确的变体,ANSI 或 Unicode,取决于您的构建设置。
  • 谢谢,这是真的,但创建的文件不是 Unicode 文件。怎么了?

标签: c++ windows char wchar


【解决方案1】:

微软特定 如果您想编写符合 Unicode 编程模型的可移植代码,请使用 wmain 而不是 main

wmain( int argc, wchar_t *argv[ ], wchar_t *envp[ ] )

wmain 在 ms http://msdn.microsoft.com/en-us/library/bky3b5dh(VS.80).aspx

【讨论】:

    【解决方案2】:

    我一直发现these string basics and conversions 在处理 C++ 中的 Unicode 时非常有用。

    【讨论】:

    猜你喜欢
    • 2013-03-30
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 2021-06-27
    • 2021-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多