zoukankan      html  css  js  c++  java
  • c++ string和wstring之间的转换

    using namespace std;

    1、字符串中不含有汉字

    |--string-->wstring

    string s("abc");

    wstring ws(s.begin(), s.end());//或者wstring ws; ws.assign(s.begin(), s.end());

    |--wstring-->string

    wstring ws(L"ABC");

    string s(ws.begin(), ws.end());//或者string s; s.assign(ws.begin(), ws.end());

    2、字符串中含有汉字

    |--Windows平台:(sizeof(wchar_t)=2)

    wstring myStringToWString(string s){

      size_t convertedChars=0;//被转换的字符个数

      wchar_t wcstring[128];

      setlocale(LC_CTYPE,"chs");//处理汉字

      mbstowcs_s(&convertedChars, wcstring, 128, s.c_str(), 128);

      return wstring(wcstring);

    }

    string myWStringToString(wstring ws){

      size_t convertedChars=0;//被转换的字符个数

      wchar_t cstring[128];

      setlocale(LC_CTYPE,"chs");//处理汉字

      wcstombs_s(&convertedChars, cstring, 128, ws.c_str(), 128);

      return string(cstring);

    }

    |--Linux平台(需要注意的是linux下sizeof(wchar_t)=4)

    wstring myStringToWString(string s){

      wchar_t wcstring[128];

      setlocale(LC_CTYPE,"chs");//处理汉字

      mbstowcs(wcstring, s.c_str(), 128);

      return wstring(wcstring);

    }

    string myWStringToString(wstring ws){

      wchar_t cstring[128];

      setlocale(LC_CTYPE,"chs");//处理汉字

      wcstombs(cstring, ws.c_str(), 128);

      return string(cstring);

    }

  • 相关阅读:
    命名对象继承2-验证Open*命名对象安全属性的传递
    命名对象继承1-验证Create*命名对象安全属性的传递
    讨论c/c++计算小数的精度问题
    隐藏进程名
    一个函数重载问题
    02-Python基础之列表
    01-Python基础之字符串
    django 实用工具dj-database-url 快速配置数据库
    Gerrit安装配置
    关于数学的摘抄
  • 原文地址:https://www.cnblogs.com/coolbear/p/3096683.html
Copyright © 2011-2022 走看看