CString,string,char数组的转换

简介:

 虽然网上关于CString,string,char数组的转换的文章一大堆,但是感觉很乱很杂,而且许多并不能真正达到目的,在此,我把自己调试通过的转换方法贴到这里,做个笔记。

    编译环境:vs2008, Use Unicode Character Set

 
  1. //----------------ANSI字符串转换为UNICODE字符串----------------------//   
  2.  
  3. // 待转换的数组   
  4. char szDCBparam[50] = {'0','1','\0'};   
  5.  
  6. // 计算需要的缓冲区大小   
  7. DWORD dwNum = MultiByteToWideChar (CP_ACP, 0, szDCBparam, -1, NULL, 0);   
  8. // 分配存放转换后数据的缓冲区   
  9. wchar_t *pwText = new wchar_t[dwNum] ;   
  10. // 转换后的数据存放在pwText所指向的空间  
  11. if (!MultiByteToWideChar (CP_ACP, 0, szDCBparam, -1, pwText, dwNum))   
  12. {   
  13.     return;   
  14. }   
  15. // 注: 如果是char型数组转CString,直接使用CString szTest = CString(szDCBparam);
  16.  
  17.  
  18. //----------------UNICODE字符串转换为ANSI字符串----------------------//  
  19. //----------------将CString转为char型数组---------------------------//  
  20.  
  21. // 待转换的数据   
  22. CString szErrorInfo = _T("this is a test string!");   
  23.  
  24. // 保存错误信息的ANSI字符串的缓冲区,注意,缓冲区要足够大   
  25. char InfoString[100];   
  26.  
  27. // 转换后的数据存放在InfoString数组中  
  28. if (!WideCharToMultiByte(CP_ACP,0,LPCTSTR(szErrorInfo),-1,InfoString,100,NULL,NULL))   
  29. {   
  30.     return;   
  31. }   
  32.  
  33. //----------------将CString转为string----------------------//  
  34. CString cstr=_T("test");   
  35. std::string str = (CStringA)cstr;   
  36. // 注意,在vs2008下,使用std::string temp = cstr.GetBuffer(0)不行。
  37.  
  38. //----------------将string转为CString----------------------//  
  39. std::string strTest = "test";  
  40. CString cstrTest = CString(strTest.c_str()); 

 


本文转自 Jhuster 51CTO博客,原文链接:http://blog.51cto.com/ticktick/317550,如需转载请自行联系原作者

相关文章
|
11月前
|
Java
java8 遍历String数组的几种方式
java8 遍历String数组的几种方式
102 0
|
2月前
|
JavaScript 前端开发
JavaScript基础&实战(5)js中的数组、forEach遍历、Date对象、Math、String对象
这篇文章介绍了JavaScript中的数组、Date对象、Math对象以及包装类(String、Number、Boolean),并详细讲解了数组的创建、方法(如forEach、push、pop、unshift、slice、splice)和遍历操作,以及工厂方法创建对象和原型对象的概念。
JavaScript基础&实战(5)js中的数组、forEach遍历、Date对象、Math、String对象
|
4月前
|
存储 算法 搜索推荐
深入解析String数组的操作与性能优化策略
深入解析String数组的操作与性能优化策略
|
3月前
|
存储 Java 数据处理
定义和使用String数组
定义和使用String数组
|
3月前
|
存储
数据存储之数组的特点,长度固定,适应变化需求,集合类特点是空间可变,ArrayList泛型,ArrayList<String> array = new ArrayList<String>()
数据存储之数组的特点,长度固定,适应变化需求,集合类特点是空间可变,ArrayList泛型,ArrayList<String> array = new ArrayList<String>()
new String()定义字符串为空,char[] chs = {‘a‘,‘b‘,‘c‘} String s2 = new String(chs) 输出abc,byte定99为a
new String()定义字符串为空,char[] chs = {‘a‘,‘b‘,‘c‘} String s2 = new String(chs) 输出abc,byte定99为a
|
3月前
|
存储 Java 开发者
String数组的初始化及操作技巧
String数组的初始化及操作技巧
|
3月前
|
存储 算法 搜索推荐
深入解析String数组的操作与性能优化策略
深入解析String数组的操作与性能优化策略
|
4月前
|
存储 Java 数据库
解析和使用String数组的方法
解析和使用String数组的方法
|
5月前
|
C++
【C++】std::string 转换成非const类型 char* 的三种方法记录
【C++】std::string 转换成非const类型 char* 的三种方法记录
75 0