zoukankan      html  css  js  c++  java
  • string 与wstring 的转换

    std::wstring StringToWString(const std::string &str)
    {
    std::wstring wstr(str.length(),L' ');
    std::copy(str.begin(), str.end(), wstr.begin());
    return wstr;
    }

    //只拷贝低字节至string中
    std::string WStringToString(const std::wstring &wstr)
    {
    std::string str(wstr.length(), ' ');
    std::copy(wstr.begin(), wstr.end(), str.begin());
    return str;
    }

    上面的对于英文字符串 是正确的,对于中文是错误的,下面的代码则适用于中英文!

    std::string AVentilationGraph::wstring2string(const std::wstring &wstr)
    {
        std::string curLocale = setlocale(LC_ALL, NULL);        // curLocale = "C";
        setlocale(LC_ALL, "chs");
        const wchar_t* _Source = wstr.c_str();
        size_t _Dsize = 2 * wstr.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;
    }
    
    //wstring 转 string
    std::wstring AVentilationGraph::string2wstring(const std::string &str)
    {
        setlocale(LC_ALL, "chs");
        const char* _Source = str.c_str();
        size_t _Dsize = str.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;
    }
  • 相关阅读:
    中文字体
    URL锚点HTML定位技术机制
    关于JS异步加载方案
    select标签用法
    javascript refresh page 几种页面刷新的方法
    用JavaScript刷新框架子页面的七种方法
    robots.txt用法
    netstat 基本用法
    linux下ps命令
    socket编程和并发服务器
  • 原文地址:https://www.cnblogs.com/tengpan-cn/p/4465518.html
Copyright © 2011-2022 走看看