zoukankan      html  css  js  c++  java
  • C++ 处理 utf-8

    类似"abc汉字"这样的字符串是以utf-8编码;
    C++ 的 cout执行的操作是把参数发送给stdout,因此如果终端支持utf-8, 汉字可以使用cout打印;
    比较好的办法是使用unicode, 例如, wchar_t wc = L"abc汉字", 字符串前面加 L, 显式声明unicode, 然后使用

    wcout.imbue(locale("chs"));
    wcout<<s2<<endl;

    可以对unicode 和 utf-8 进行转码, ascii 提供了
    wint_t btowc (int c);
    int wctob (wint_t wc);

    微软提供了
    int MultiByteToWideChar(
    UINT CodePage,
    DWORD dwFlags,
    LPCSTR lpMultiByteStr,
    int cchMultiByte,
    LPWSTR lpWideCharStr,
    int cchWideChar
    );
    int WideCharToMultiByte(
    UINT CodePage, //指定执行转换的代码页
    DWORD dwFlags, //允许你进行额外的控制,它会影响使用了读音符号(比如重音)的字符
    LPCWSTR lpWideCharStr, //指定要转换为宽字节字符串的缓冲区
    int cchWideChar, //指定由参数lpWideCharStr指向的缓冲区的字符个数
    LPSTR lpMultiByteStr, //指向接收被转换字符串的缓冲区
    int cchMultiByte, //指定由参数lpMultiByteStr指向的缓冲区最大值
    LPCSTR lpDefaultChar, //遇到一个不能转换的宽字符,函数便会使用pDefaultChar参数指向的字符
    LPBOOL pfUsedDefaultChar //至少有一个字符不能转换为其多字节形式,函数就会把这个变量设为TRUE
    );

  • 相关阅读:
    HDU 1017—A Mathematical Curiosity
    N !
    L
    J
    Danganronpa
    A water problem
    hdu 5461 Largest Point
    India and China Origins hdu 5652 (BFS+二分)
    D (多校训练三) poj1919 (二分)
    Discovering Gold lightoj 1030 (dp+期望)
  • 原文地址:https://www.cnblogs.com/aslistener/p/5827339.html
Copyright © 2011-2022 走看看