char向wchar的转换-MultiByteToWideChar

问题产生

使用CreateFile函数,如下:

CreateFile(lpcTheFile, GENERIC_READ, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL)

第一个参数是wchar类型,而我从配置文件中读入的文件路径是char类型,因此涉及到char至wchar的转换问题

 

问题解决

使用MultiByteToWideChar函数函数代码如下:

    DWORD dwPathLen = MultiByteToWideChar(CP_ACP, 0, input_path_fasta, -1, NULL, 0);
    wchar_t*lpcTheFile = new wchar_t[dwPathLen];
    MultiByteToWideChar(CP_ACP, 0, input_path_fasta, -1, lpcTheFile, dwPathLen);

讲解如下:

倒数第三个参数设为-1,倒数第二个参数设为NULL,Z=最后一个参数设为0,函数返回lpcTheFile所需的空间,即dwPathLen;

再次调用该函数,即可完成转换。

 

问题扩展

为什么需要char到wchar的转换?

char是ASCII编码,wchar是unicode编码。

"如果ANSI代码页允许在不同的计算机上不相同,甚至在单台计算机上不一样,将会导致数据崩溃。为了代码页一致性,应用程序应该使用Unicode编码,如UTF-8或者UTF-16,而不是使用特殊的代码页,除了早期标准或者数据格式化不允许使用Unicode编码。"(百度百科)

posted @ 2017-03-24 18:02  ~不倦  阅读(1146)  评论(0编辑  收藏  举报