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编码。"(百度百科)

  • 相关阅读:
    [UVA 10603]Fill
    [BZOJ 4152][AMPPZ 2014]The Captain
    P4779单源最短路径(标准版)
    P3372 线段树模版1
    P1776宝物筛选
    最长上升子序列模版
    01背包问题
    SHOI2008 汉诺塔
    log P1080国王游戏
    最小生成树模版 Kruskal
  • 原文地址:https://www.cnblogs.com/zhenghao2/p/6612793.html
Copyright © 2011-2022 走看看