转载:http://blog.csdn.net/chocolateconanlan/article/details/4058868

wchar_t*,wchar_t,wchat_t数组,char,char*,char数组,std::string,std::wstring,CString….

一些转换函数,主要针对宽字符。字符串是根本啊,要好好掌握了

#include <string>
// 使用CString必须使用MFC,并且不可包含<windows.h>
#define _AFXDLL
#include <afx.h>
using namespace std;
//———————————————————————————-
//将 单字节char* 转换为 宽字节 wchar*
inline wchar_t* AnsiToUnicode( const char* szStr )
{
int nLen = MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED, szStr, -1, NULL, 0 );
if (nLen == 0)
{
   return NULL;
}
wchar_t* pResult = new wchar_t[nLen];
MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED, szStr, -1, pResult, nLen );
return pResult;
}
//———————————————————————————-
// 将 宽字节wchar_t* 转换 单字节char*
inline char* UnicodeToAnsi( const wchar_t* szStr )
{
int nLen = WideCharToMultiByte( CP_ACP, 0, szStr, -1, NULL, 0, NULL, NULL );
if (nLen == 0)
{
   return NULL;
}
char* pResult = new char[nLen];
WideCharToMultiByte( CP_ACP, 0, szStr, -1, pResult, nLen, NULL, NULL );
return pResult;
}
//———————————————————————————-
// 将单字符 string 转换为宽字符 wstring
inline void Ascii2WideString( const std::string& szStr, std::wstring& wszStr )
{
int nLength = MultiByteToWideChar( CP_ACP, 0, szStr.c_str(), -1, NULL, NULL );
wszStr.resize(nLength);
LPWSTR lpwszStr = new wchar_t[nLength];
MultiByteToWideChar( CP_ACP, 0, szStr.c_str(), -1, lpwszStr, nLength );
wszStr = lpwszStr;
delete [] lpwszStr;
}
//———————————————————————————-
int _tmain(int argc, _TCHAR* argv[])
{
char*   pChar = “我喜欢char”;
wchar_t* pWideChar = L”我讨厌wchar_t”;
wchar_t   tagWideCharList[100] ;
char   ch = ‘A’;
char   tagChar[100] = {NULL};
CString   cStr;
std::string str;

// 注:设置语言环境以便输出WideChar
setlocale(LC_ALL,”chs”);

// 注: char* 转换 wchar_t*
// 注: wchar_t 未重载 << ,所以不可使用 cout << 输出
pWideChar = AnsiToUnicode( pChar );
// 注:printf(”%ls”) 和 wprintf(L”%s”) 一致
printf( “%ls/n”, pWideChar );

// 注:wchar_t* 转换 wchar_t[]
wcscpy ( tagWideCharList, pWideChar );
wprintf( L”%s/n”, tagWideCharList );

// 注:wchar_t[] 转换 wchar_t*
pWideChar = tagWideCharList;
wprintf( L”%s/n”, pWideChar );

// 注:char 转换 string
str.insert( str.begin(), ch );
cout << str << endl;

// 注:wchar_t* 转换 string
pWideChar = new wchar_t[str.length()];
swprintf( pWideChar, L”%s”, str.c_str());
wprintf( L”%s/n”, pWideChar );

// 注:string 转换 char*
pChar = const_cast<char*>(str.c_str());
cout << pChar << endl;

// 注:char* 转换 string
str = std::string(pChar);
// 注: cout 的 << 重载了string, 若printf 的话必须 printf(”%s”, str.c_str());
//   而不可 print( “%s”, str ); 因为 str 是个 string 类
cout << str << endl;

// 注:string 转换 char[]
str = “无聊啊无聊”;
strcpy( tagChar, str.c_str() );
printf( “%s/n”, tagChar );

// 注:string 转换 CString;
cStr = str.c_str();

// 注:CString 转换 string
str = string(cStr.GetBuffer(cStr.GetLength()));

// 注:char* 转换 CString
cStr = pChar;

// 注:CString 转换 char*
pChar = cStr.GetBuffer( cStr.GetLength() );

// 注:CString 转换 char[]
strncpy( tagChar, (LPCTSTR)CString, sizeof(tagChar));

// 注:CString 转换 wchar_t*
pWideChar = cStr.AllocSysString();
printf( “%ls/n”, pWideChar );
}

转载于:https://www.cnblogs.com/fuyanwen/p/3200886.html

wchar_t*,wchar_t,wchat_t数组,char,char*,char数组,std::string,std::wstring,CString 以及system(command)...相关推荐

  1. 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 ...

  2. [转]wchar_t char std::string std::wstring CString 转换

    [转]wchar_t char std::string std::wstring CString 转换 1 #include <string> 2 // 使用CString必须使用MFC, ...

  3. C++中std::string与C-String字符数组的互相转换

    C语言中只有字符数组这一说法,没有C++专门封装的字符串类std::string.而字符数组C-String以\0作为结束符.std::string其实还是存储了C-String这个指针,只不过不同的 ...

  4. cstring转为string vc_VC之CString,wchar_t,int,string,char*之间的转换-阿里云开发者社区

    VC之CString,wchar_t,int,string,char*之间的转换 1. CString 转 wchar_t CString path = "asdf"; wchar ...

  5. python 调用C++,传递int,char,char*,数组和多维数组

    python 调用C++,传递int,char,char*,数组和多维数组 2018年03月21日 11:19:01

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

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

  7. char二维数组_C语言指针与数组详解

    指针与数组 指针可以与变量结合,也可以与数组结合使用.指针数组和数组指针是两个截然不同的概念,指针数组是一种数组,该数组存放的是一组变量的地址.数组指针是一个指针,表示该指针是指向数组的指针. 1.指 ...

  8. c int转char数组_C语言 指向数组和字符串的指针

    实例1 我们在pointer_test.c的文件中写一个test2()函数,我们定义一个有3个元素的字符数组初始化值分别为,'A', 'B', 'C',然后定义一个字符指针pc,把数组ca的首地址复制 ...

  9. [转]char * 和字符数组

    [转]char * 和字符数组 原文地址:http://www.cnblogs.com/jeakon/archive/2012/05/27/2816809.html 代码中的int * i就是我们关注 ...

最新文章

  1. 盘点程序员写过的惊天Bug:亏损30亿、致6人死亡,甚至差点毁灭世界
  2. python 网页自动处理_推荐一款 10 行 Python 代码实现网页自动化工具
  3. 传统云主机存在哪些问题和弊端?
  4. Oracle计划任务JOB不自动执行的问题
  5. Python错误:TypeError: string indices must be integers
  6. HTML---初识HTML
  7. phoneGap 中修改生成APP的名字
  8. 【曼彻斯特编码/差分曼彻斯特编码】
  9. hexo -d 部署的时候报错 FATAL Something's wrong Template render error: expected variable
  10. linux系统下卸载rpm方式安装的mysql5.7.*
  11. 从中煤陕西公司看政企移动信息化应用
  12. 超级实况服务器维护中,超级实况最新版攻略
  13. Unity3D放破解反编译。DLL加密,mono解密。全程详解。
  14. PS透明婚纱抠图(超详细)
  15. react 下载 excel 文件
  16. html站点根目录怎么改,通过重定向把子目录设置为网站根目录
  17. 简述多媒体计算机的特点,多媒体课件的特点和作用
  18. 概率论复习笔记2.0
  19. RTSP数据的无插件播放与超图三维iClient3D的视频投射
  20. Java开发中常见的危险信号(中)

热门文章

  1. Android学习笔记之自定义Toast
  2. C++程序的内存布局
  3. spring源码学习一
  4. sublime text使用小技巧
  5. [Java] SpringMVC工作原理之四:MultipartResolver
  6. 安装Ubuntu server并实现远程访问
  7. 通过外部表改进一个繁琐的大查询
  8. [转载] 七龙珠第一部——第091话 克林反败为胜
  9. SVG与UML图详解
  10. kali 安装java jdk