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,如需转载请自行联系原作者

相关文章
|
6月前
|
Java
java8 遍历String数组的几种方式
java8 遍历String数组的几种方式
|
3月前
|
SQL JSON Apache
Flink问题之嵌套 json 中string 数组的解析异常如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
223 1
|
4月前
|
存储 缓存 自然语言处理
Java中的String类:原理、设计思想和与数组比较的优势
Java中的String类:原理、设计思想和与数组比较的优势
28 0
|
5月前
从接口获取获取到数组arr=[‘1‘,‘a‘,‘2‘,‘b‘,‘3‘,‘c‘]转换成{number:‘123’,char:‘abc’}
从接口获取获取到数组arr=[‘1‘,‘a‘,‘2‘,‘b‘,‘3‘,‘c‘]转换成{number:‘123’,char:‘abc’}
|
6月前
char[] 转String时的陷阱
char[] 转String时的陷阱
22 1
|
7月前
|
存储 自然语言处理 Java
Java_9_为何要将_String_的底层实现由_char[]_改成了_byte[]_?
Java_9_为何要将_String_的底层实现由_char[]_改成了_byte[]_?
|
8月前
|
存储
关于char类型数组的两种输出方法
关于char类型数组的两种输出方法
146 0
|
9月前
|
JavaScript
ES6对String字符串、Array数组、Number数字、Object对象 类型做了哪些升级优化
ES6对String字符串、Array数组、Number数字、Object对象 类型做了哪些升级优化
|
9月前
|
Java
Java中 String与基本数据类型,包装类,char[],byte[]之间的转换
Java中 String与基本数据类型,包装类,char[],byte[]之间的转换
56 0
|
9月前
|
Go
Go处理中文 string 转为 rune 数组
Go处理中文 string 转为 rune 数组
89 0