unicode下各种类型转换CString、string

把最近用到的各种unicode下类型转换总结了一下:

1、string转CString

string a=”abc”;

CString str=CString(a.c_str());

或str.format("%s", a.c_str())

2、int转CString

Int a;

CString Cstr;

Cstr.Format(_T("%d"),a);

3、char 转 CString

CString.format("%s", char*);

例:

char  szPath[];

CString Cstr;

Cstr.Format(_T("%s"),szPath);

4、CString转string
              CString C_str=_T("abc");

string str((LPCSTR)CStringA(C_str));

或string str=CStringA(C_str);

或通过char*中转

CString m_str(_T("qwerg"));

char *chr=new char[m_str.GetLength()+1];

WideCharToMultiByte(CP_ACP,0,m_str.GetBuffer(),-1,chr,m_str.GetLength()+1,NULL,NULL);

string str=chr;

或者CString C_str = _T("ooqoqoq");

//   setlocale(LC_ALL, "chs");

char *p = new char[C_str.GetLength()+1];

wcstombs(p,C_str,C_str.GetLength()+1);

string str = p;

用下面代码检测:

MessageBox((CString)str.c_str());

5、CString转const char*

CString a=_T(“  ”);

CStringA b(a);

const char *c=new char(50);

c=b.GetString();

或者:

CString FilePath=_T(“   ”);

int len=WideCharToMultiByte( CP_ACP,0,FilePath.AllocSysString(),FilePath.GetLength(),NULL,0,NULL,NULL);

char * pAscii =new char[len];

len=WideCharToMultiByte(CP_ACP,0,FilePath.AllocSysString(),FilePath.GetLength(),pAscii,len+1,NULL,NULL);

pAscii[len]=0;

const char* path=(const char*)pAscii;

6、CString转char*

CString strPath = _T("啊啊啊");

int nLength = strPath.GetLength();

int nBytes = WideCharToMultiByte(CP_ACP,0,strPath,nLength,NULL,0,NULL,NULL);

char* VoicePath = new char[ nBytes + 1];

memset(VoicePath,0,nLength + 1);

WideCharToMultiByte(CP_OEMCP, 0, strPath, nLength, VoicePath, nBytes, NULL, NULL);

VoicePath[nBytes] = 0;

7、CString转int

CString str=_T("123");

int b=_ttoi(str);

或者转成string,再转int

8、char 转 string 
string s(char *);

9、char[]转LPWSTR

直接强制转换

10、string转char*

把string转换为char* 有3中方法:
1.data
如:
string str="abc";
char *p=str.data();
2.c_str
如:string str="gdfd";
    char *p=str.c_str();
3. copy
比如
string str="hello";
char p[40];
str.copy(p,5,0); //这里5,代表复制几个字符,0代表复制的位置
*(p+5)=‘\0‘; //要手动加上结束符
cout <</span> <</span>p;

11、string转int

string num;

int a=atoi(num.c_str());

12 、int转string

#include

stringstream ss;

int n = 123;
    string str;
    ss<<n;
    ss>>str;

时间: 2024-08-02 17:25:29

unicode下各种类型转换CString、string的相关文章

unicode下各种类型转换,CString,string,char*,int,char[]

把最近用到的各种unicode下类型转换总结了一下,今后遇到其他的再补充: 1.string转CString string a=”abc”; CString str=CString(a.c_str()); 或str.format("%s", a.c_str()) 2.int转CString Int a; CString Cstr; Cstr.Format(_T("%d"),a); 3.char 转 CString CString.format("%s&qu

unicode下char*和CString

1.对话框打印char* char* info=""; ::MessageBoxA(this->m_hWnd, info, "", MB_OK); 2.CString转char* int nLen; char * wsabuf = NULL;#ifdef _UNICODE //CString转换成char* USES_CONVERSION; wsabuf = W2A(send_txt_str);//send_txt_str为CString消息#else#end

UniCode 下 CString 转 char* 的方法

今天进行文件操作时,将CString的GetBuffer()后直接倒到char数组后写入文件发现 每个字符与字符之间都有一个空格存在,而且有内容丢失.原来CString类对象GetBuffer(),后以后还是unicode编码,所以必须将宽字符转换成char类型那就必须用到一个函数 网上查了下解决方法如下: 在Visual C++.NET2005中,默认的字符集形式是Unicode,但在VC6.0等工程中,默认的字符集形式是多字节字符集(MBCS:Multi-Byte Character Set

CString和string在unicode与非unicode下的相互转换(转)

原文转自 http://blog.csdn.net/u014303844/article/details/51397556 CString和string在unicode与非unicode下的相互转换 最近想写一个手机控制电脑的玩具,涉及到了socket通信,数据采用json通用格式,首先是jsoncpp的编译问题太烦了,然后还有更烦的,java中的String多容易的玩意儿,然后到了c/c++/mfc中超级烦,搜索了很久的攻略,用了大把的时间,最后写了个这玩意儿出来,或许可以帮助到一些需要此的道

MFC Unicode编码下,获取CString描述的IP地址并赋值到CIPAddressCtrl控件中

1. UniCode编码下,CString中字符被声明为宽字,应使用如下方法获取char* CString cstrIp = strIp; // Unicode 下将 CString转为char* int n = cstrIp.GetLength(); int len = WideCharToMultiByte(CP_ACP,0,cstrIp,cstrIp.GetLength(),NULL,0,NULL,NULL); char *p = new char[len+1]; WideCharToMu

Unicode环境下的类型转换

1.string转CString string a=”abc”; CString str=CString(a.c_str()); 或str.format("%s", a.c_str()) 2.int转CString Int a; CString Cstr; Cstr.Format(_T("%d"),a); 3.char 转 CString CString.format("%s", char*); 例: char  szPath[]; CStrin

CString string char* char 之间的字符转换(多种方法)

在写程序的时候,我们经常遇到各种各样的类型转换,比如 char* CString string 之间的互相转换.首先解释下三者的含义. CString 是一种很有用的数据类型.它们很大程度上简化了MFC中的许多操作(适用于MFC框架),使得MFC在做字符串操作的时候方便了很多.需要包含头文件#include <afx.h>. C++中的string用于便是字符串,功能比较强大.要想使用标准C++中string类,必须要包含#include <string>// 注意是<str

转:char*, char[] ,CString, string的转换

转:char*, char[] ,CString, string的转换 (一) 概述 string和CString均是字符串模板类,string为标准模板类(STL)定义的字符串类,已经纳入C++标准之中: CString(typedef CStringT > CString)为Visual C++中最常用的字符串类,继承自CSimpleStringT类,主要应用在MFC和ATL编程中,主要数据类型有char(应用于ANSI),wchar_t(unicode),TCHAR(ANSI与unicod

【转】CString,string,char*综合比较

(一)  概述 1.string和CString均是字符串模a板类: 2.string为标准模板类(STL)定义的字符串类,已经纳入C++标准之中: 3.CString(typedef CStringT<TCHAR, StrTraitMFC<TCHAR>> CString)为Visual C++中最常用的字符串类,继承自CSimpleStringT类,主要应用在MFC和ATL编程中,主要数据类型有char,wchar_t(unicode),TCHAR(ANSI与unicode均可)