zoukankan      html  css  js  c++  java
  • 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编码。"(百度百科)

  • 相关阅读:
    最近工作
    有点感受
    日子有点快
    IDEA配置spring
    IDEA配置hibernate
    mysql插入中文乱码
    深夜配置一把struts2
    IDEA 配置SSH2
    找工作的事情
    YTU 2509: 奇怪的分式
  • 原文地址:https://www.cnblogs.com/zhenghao2/p/6612793.html
Copyright © 2011-2022 走看看