string与wstring互转

C++ Code 
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
 
/// <summary>
///utf8转unicode
/// </summary>
bool Utf8ToUnicode( std::string& utf8_string, std::wstring& unicode_string)
{
    unicode_string = L"";
    if (utf8_string.compare("") == 0 )
    {
        return false;
    }

const char *temp_utf8_string = utf8_string.c_str();
    int unicode_string_len = ::MultiByteToWideChar(CP_ACP, NULL, temp_utf8_string, strlen(temp_utf8_string), NULL, 0);
    if (0 == unicode_string_len )
    {
        return false;
    }

wchar_t *temp_unicode_string = new wchar_t[unicode_string_len + 1];
    memset(temp_unicode_string, 0, sizeof(wchar_t) * (unicode_string_len + 1));
    if (0 == ::MultiByteToWideChar(CP_ACP, NULL, temp_utf8_string, strlen(temp_utf8_string), temp_unicode_string, unicode_string_len))
    {
        delete[] temp_unicode_string;
        temp_unicode_string = NULL;
        return false;
    }

unicode_string = temp_unicode_string;
    delete[] temp_unicode_string;
    temp_unicode_string = NULL;

return true;

}

/// <summary>
///unicode转utf-8
/// </summary>
bool UnicodeToUtf8( std::wstring& unicode_string, std::string& utf8_string)
{
    utf8_string = "";
    if (_wcsicmp(unicode_string.c_str(), L"") == 0 )
    {
        return false;
    }

DWORD utf8_string_len = WideCharToMultiByte(CP_ACP, NULL, unicode_string.c_str(), -1, NULL, 0, NULL, FALSE);// WideCharToMultiByte的运用
    if (0 == utf8_string_len)
    {
        return false;
    }
    char *temp_utf8_string = new char[utf8_string_len + 1];
    memset(temp_utf8_string, 0, sizeof(char) * (utf8_string_len + 1));
    if (0 == WideCharToMultiByte (CP_ACP, NULL, unicode_string.c_str(), -1, temp_utf8_string, utf8_string_len, NULL, FALSE))
    {
        delete[] temp_utf8_string;
        temp_utf8_string = NULL;
        return false;
    }

utf8_string = (std::string)temp_utf8_string;
    delete[] temp_utf8_string;
    temp_utf8_string = NULL;

return true;
}

转载于:https://www.cnblogs.com/MakeView660/p/8274588.html

string与wstring互转相关推荐

  1. C++string与wstring类型转换

    在c++开发时有的库函数必须传递wstring宽字符串作为参数,在代码中通过L"wstring"定义宽字符串传递参数这没什么难度,问题是实际过程中需要接收输入string数据,这时 ...

  2. C++11:string和wstring之间互转换

    今天打算做string到wstring转换时发现以前早已经写过,已经忘记从哪里找来的了,贴出代码,以防再忘记.C++11后UTF8编码转换还真是方便 #include <string> # ...

  3. wchar_t*,wchar_t,wchat_t数组,char,char*,char数组,std::string,std::wstring,CString....转换

    wchar_t*,wchar_t,wchat_t数组,char,char*,char数组,std::string,std::wstring,CString.... #include <strin ...

  4. PInvoke复习之深入理解char*与wchar_t*与string以及wstring之间的相互转换

    本篇文章是对c++中的char*与wchar_t*与string以及wstring之间的相互转换进行了详细的分析介绍,需要的朋友参考下 #ifndef USE_H_ #define USE_H_ #i ...

  5. wchar_t*,wchar_t,wchat_t数组,char,char*,char数组,std::string,std::wstring,CString 以及system(command)...

    转载:http://blog.csdn.net/chocolateconanlan/article/details/4058868 wchar_t*,wchar_t,wchat_t数组,char,ch ...

  6. string、wstring、cstring、 char、 tchar、int转换方法

    1.string转wstring ? 1 2 3 4 5 6 7 wstring s2ws(const string& s) {  _bstr_t t = s.c_str();  wchar_ ...

  7. c++ string 与 char 互转 以及base64

    c++ string 与 char 互转 很简单如下 char bts[5] = {'A','B','C','D','E'};printf("%s\n",bts);//char t ...

  8. Java获得时间 String与Timestamp互转

    一.String与Date(java.util.Date)互转      1.1 String -> Date Java代码   String dateStr = "2010/05/0 ...

  9. jq js json 转字符串_JS中JSON对象和String之间的互转及处理技巧

    json:JavaScript 对象表示法(javascript Object Notation),其实JSON就是一个javaScript的对象(Object)而已. 如有不清楚JSON,可以去w3 ...

最新文章

  1. 用AI为美国政府“助纣为虐”,微软员工怒了
  2. JAVA基础16-Java匿名内部类
  3. BH38-Z06单精度绝对值旋转编码器数据手册
  4. 两款高大尚广告GO跳转页PHP源码
  5. mysql limti_mysql优化
  6. c# 计算圆锥的体积_急求用c#计算圆柱体和圆锥体的体积的代码,下面是要求:
  7. 正则表达式 详解---2017-04-16
  8. java entrypoint_java – 有时只调用AuthenticationEntryPoint
  9. 构建可网管的企业网络
  10. 代码积累与编程能力哪个更重要
  11. 【2019杭电多校第一场1004=HDU6581】Vacation(思维+避免超时)
  12. 邮件内容安全刻不容缓
  13. MagicBookPro-2019-Intel版BIOS降级教程
  14. c语言正弦波程序_DAC0832的波形信号发生器Proteus仿真设计,正弦波、三角波、方波和锯齿波...
  15. ppt转图片(支持动画帧的转换)
  16. 超分辨率技术AI人工智能老照片修复自动人像脑补照片高清重建人脸模糊图片变清晰软件
  17. iwrite复制粘贴
  18. JavaWeb完整笔记
  19. JavaEE 面试题总结
  20. 5、Squid代理服务

热门文章

  1. Pandas Period
  2. MySQL group-by-modifiers
  3. 2.6 更多导数的例子
  4. java左手握右手_在队列中,向中看齐举哪个手?
  5. 原创 Spark go nsx很可爱的 公众号 vSAN 文章合集
  6. 网络介绍 > 网络连接 > 混合云网络
  7. MyBatis学习总结(2)——使用MyBatis对表执行CRUD操作
  8. linux 软链接_Linux软连接和硬链接
  9. 肇东一中2021高考成绩查询,肇东一中2018高考喜报成绩
  10. 要么出色,要么出局!威马公布三大核心技术矩阵背后的大野心