win32 wstring <-> string

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
static std::string w2c(std::wstring str)
    {
        int nlength = str.length();
        int nbytes = WideCharToMultiByte(0,0,str.c_str(),nlength,NULL,0,NULL,NULL);
        if(nbytes == 0) return "";
 
        char*buff = new char[nbytes+1];
        WideCharToMultiByte(0,0,str.c_str(),nlength,buff,nbytes,NULL,NULL);
        buff[nbytes] = '\0';
        std::string ret_str = std::string(buff);
        delete [] buff;
        return ret_str;    
    }
 
static std::wstring c2w(std::string str)
    {
        if(str.length() == 0) return std::wstring();
 
        int nu = str.length();
        size_t n =(size_t)MultiByteToWideChar(CP_ACP,0,str.c_str(),nu,NULL,0);
        wchar_t*wbuff = new wchar_t[n+1];
        MultiByteToWideChar(CP_ACP,0,str.c_str(),(int)nu,wbuff,(int)n);
        wbuff[n] = 0;
 
        std::wstring wstr_ret = std::wstring(wbuff);
        delete []wbuff;
        return wstr_ret;
    }

 【转】https://my.oschina.net/lyr/blog/375799

posted on   lydstory  阅读(44)  评论(0编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2020-03-04 qdialog 自动缩放控件可以实现,qmainwindow如何自动缩放
2020-03-04 qt ui设计器 复制粘贴控件
2020-03-04 QMainWindow 中的 centralWidget()
2020-03-04 QT5如何在MainWindow上布局(QWidget::setLayout: Attempting to set QLayout "" on MainWindow)
2020-03-04 宏定义

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示