zoukankan      html  css  js  c++  java
  • string转wstring

    #include <string>
    std::string ws2s(const std::wstring& ws)
    {
        std::string curLocale = setlocale(LC_ALL, NULL);        // curLocale = "C";
        setlocale(LC_ALL, "chs");
        const wchar_t* _Source = ws.c_str();
        size_t _Dsize = 2 * ws.size() + 1;
        char *_Dest = new char[_Dsize];
        memset(_Dest,0,_Dsize);
        wcstombs(_Dest,_Source,_Dsize);
        std::string result = _Dest;
        delete []_Dest;
        setlocale(LC_ALL, curLocale.c_str());
        return result;
    }
    
    std::wstring s2ws(const std::string& s)
    {
        setlocale(LC_ALL, "chs"); 
        const char* _Source = s.c_str();
        size_t _Dsize = s.size() + 1;
        wchar_t *_Dest = new wchar_t[_Dsize];
        wmemset(_Dest, 0, _Dsize);
        mbstowcs(_Dest,_Source,_Dsize);
        std::wstring result = _Dest;
        delete []_Dest;
        setlocale(LC_ALL, "C");
        return result;
    }

      

    Unicode下wstring(wchar_t*)和string(char *)转换

    #include<string>
    using namespace std;
    
    //将string转换成wstring
    wstring string2wstring(string str)
    {
    	wstring result;
    	//获取缓冲区大小,并申请空间,缓冲区大小按字符计算
    	int len = MultiByteToWideChar(CP_ACP, 0, str.c_str(), str.size(), NULL, 0);
    	TCHAR* buffer = new TCHAR[len + 1];
    	//多字节编码转换成宽字节编码
    	MultiByteToWideChar(CP_ACP, 0, str.c_str(), str.size(), buffer, len);
    	buffer[len] = '';				//添加字符串结尾
    	//删除缓冲区并返回值
    	result.append(buffer);
    	delete[] buffer;
    	return result;
    }
    
    //将wstring转换成string
    string wstring2string(wstring wstr)
    {
    	string result;
    	//获取缓冲区大小,并申请空间,缓冲区大小事按字节计算的
    	int len = WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), wstr.size(), NULL, 0, NULL, NULL);
    	char* buffer = new char[len + 1];
    	//宽字节编码转换成多字节编码
    	WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), wstr.size(), buffer, len, NULL, NULL);
    	buffer[len] = '';
    	//删除缓冲区并返回值
    	result.append(buffer);
    	delete[] buffer;
    	return result;
    }
    

      

  • 相关阅读:
    JS创建类和对象(好多方法哟!)
    BMI身体质量指数计算公式
    点击button显示文字
    xml中设置button的背景颜色
    Android layout的属性介绍
    eclipse中自动补齐代码设置
    android开发中常用的快捷键
    eclipse修改Android工程图标显示
    Android运行报错
    读《人月神话》有感
  • 原文地址:https://www.cnblogs.com/fuyanwen/p/3245854.html
Copyright © 2011-2022 走看看