cocos2d-x开发中汉字操作技术是必须要面对的,其中可能要用到wstring和string的相互转换。我在网络上搜索到的能够应用于android
和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
29
30
31
32
33
std::string ws2s(const std::wstring& ws)
{
  string curLocale = setlocale(LC_ALL, NULL);
  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;
}
string转换为wstring:
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;
}
or
string a = "xxxx";
wstring b(a.begin(), a.end());

本文转自朱先忠老师51CTO博客,原文链接:http://blog.51cto.com/zhuxianzhong/1531768 ,如需转载请自行联系原作者

cocos2d-x开发中wstring和string的转换相关推荐

  1. c++中wstring 和 string的转换

    一.wchar_t和char的基础知识 1.C程序中使用的char类型,是占用一个字节,一共可以表示256个字符.而在32位系统中,char*是占用四个字节的,因为一个指针变量占用的存储空间为4个字节 ...

  2. Android开发中Html.fromHtml(String source)方法过时的替代方法

    前言 我们在开发中难免会遇到一个字符串中有不同颜色的字体或者有不同大小的字体这样的需求,所以可能会用到Html.fromHtml(String source) ,代码如下: String str2 = ...

  3. [转载] python中list与string的转换

    参考链接: Python 字符串string中的isupper,islower,lower,upper 1.list转string 命令:''.join(list) 其中,引号中是字符之间的分割符,如 ...

  4. iOS 开发中农历与公历的转换,星座计算。

    上一个项目开发中遇到的需求,用户选择出生日期后自动计算出对应的农历.用到这种工具类,必定百度谷歌.结果翻了个遍没看到靠谱的,基本都是用的iOS自带的农历算法然后抄个遍.但是这个算法有点小误差,而且农历 ...

  5. [导入]c#中的关于string的转换的问题

    在C#中,我们可以使用范型方法,当返回值为string的时候有点问题: 的一个范型方法实现带默认值的类型转换     public static T ConvertTo<T>(object ...

  6. 开发中的各种时间格式转换(二)

    2.Java 时间日期格式转换 import java.util.*;import java.text.*;import java.util.Calendar;public class VeDate ...

  7. Javascript中JSON与String相与转换

    JSON字符串: var str1 = '{ "name": "cxh", "sex": "man" }'; //注意有 ...

  8. C#+arcengine开发中ITable与DataTable的转换问题,ITable与DataTable相互转换的代码[转]

    最近学习到ITable与DataTable是不能够强制转换的,ITable类型的表在代码中无法转换成DataTable类型,代码会提示错误"无法强制转换":DataTable类型在 ...

  9. Java中bytebuffer和string的转换记录

    原文地址:https://stackoverflow.com/questions/17354891/java-bytebuffer-to-string byte[] bytes = k.getByte ...

最新文章

  1. pandas.read_csv() 报错 OSError: Initializing from file failed
  2. [总结] 动态DP学习笔记
  3. 做面板数据分位数回归模型_面板数据门限回归模型
  4. Java英雄:丹·艾伦
  5. Effective Modern C++英文版及中文翻译
  6. YUV422格式信号格式(以备学习之用)
  7. ssm项目直接加html文件,如何把ssm项目和vue项目部署在云服务器(上)
  8. 十项全能的java大神
  9. 【elasticsearch】 flink es sink Connection refused
  10. Leetcode 169 Majority Element
  11. JavaScript 学习指南
  12. vsftp配置问题启示录
  13. java 写文件换行_Java 写文件实现换行
  14. 按键云数据仓库平台 ,连接按键精灵和云端数据库,可自行配置用做网络验证或云端配置
  15. PE头之IMAGE_OPTIONAL_HEADER解析
  16. maven中使用assembly打包
  17. App加密:常用加密方式和爱加密原理
  18. Unity项目-黑魂复刻(二)玩家控制器(跳跃)
  19. 阿里云招聘深度学习高级算法专家P6-P8(校招和社招)
  20. 从开发转型到项目经理,在初创公司我做了什么

热门文章

  1. windows10中 git 本地仓库的使用
  2. CNN网络中的 1 x 1 卷积是什么?
  3. CLion报错解决:allocating an object of abstract class type--unimplemented pure virtual method
  4. 小松卡特彼勒无人驾驶_运输量突破20亿吨,卡特彼勒无人驾驶矿卡迎里程碑时刻...
  5. Zookeeper watch机制
  6. html读取csv文件,javaScript读取.csv文件或.xlsx文件
  7. 一步步带你详解JVM性能调优
  8. Python的零基础超详细讲解(第四天)-Python的数据类型
  9. Python面向对象编程:深度认识类class
  10. mycat mysql 存储过程_MyCat 学习笔记 第十三篇.数据分片 之 通过HINT执行存储过程...