VS2013各种类型转换
1.CString到const char *的转换 一种方法:CString str=_T("这是我的测试程序。");// 先得到要转换为字符的长度const size_t strsize=(str.GetLength()+1)*2; // 宽字符的长度;char * pstr= new char[strsize]; //分配空间;size_t
·
1.CString到const char *的转换
一种方法:
CString str=_T("这是我的测试程序。");
// 先得到要转换为字符的长度
const size_t strsize=(str.GetLength()+1)*2; // 宽字符的长度;
char * pstr= new char[strsize]; //分配空间;
size_t sz=0;
wcstombs_s(&sz,pstr,strsize,str,_TRUNCATE);
int n=atoi(const char*)pstr); // 字符串已经由原来的CString 转换成了 const char*
//没有这番转换会报错,无法将LPCTSTR或CString 转换为const char*
// 先得到要转换为字符的长度
const size_t strsize=(str.GetLength()+1)*2; // 宽字符的长度;
char * pstr= new char[strsize]; //分配空间;
size_t sz=0;
wcstombs_s(&sz,pstr,strsize,str,_TRUNCATE);
int n=atoi(const char*)pstr); // 字符串已经由原来的CString 转换成了 const char*
//没有这番转换会报错,无法将LPCTSTR或CString 转换为const char*
另一种:
const char * a;
CString b;
//a=b;//不存在从CSring到const char *的适当转换函数
a=(const char *)b.GetBuffer();
CString b;
//a=b;//不存在从CSring到const char *的适当转换函数
a=(const char *)b.GetBuffer();
2.从const char [ ]转换为const wchar_t *
CString m_strSQL;
CString m_strSeek;//一编辑框关联的成员变量
//m_strSQL.Format("book_name'%s'",m_strSeek);//报错,不能将参数 1 从“const char [14]”转换为“const wchar_t *”
CString m_strSeek;//一编辑框关联的成员变量
//m_strSQL.Format("book_name'%s'",m_strSeek);//报错,不能将参数 1 从“const char [14]”转换为“const wchar_t *”
解决方法:
修改为:m_strSQL.Format(L"book_name'%s'",m_strSeek);
或
修改为:m_strSQL.Format(L"book_name'%s'",m_strSeek);
或
m_strSQL.Format(_T("book_name\'%s\'"),m_strSeek);
char 占用一个字节 , wchar_t占用两个字节。所以要转换一下。
不管是不是用unicode,都使用_T("")宏比较好,因为_T("")会自己转换
char 占用一个字节 , wchar_t占用两个字节。所以要转换一下。
不管是不是用unicode,都使用_T("")宏比较好,因为_T("")会自己转换
3.const char * 到CString
const char * 到CString可以进行直接转换。
const char * a;
CString b;
b=a;//通过
CString b;
b=a;//通过
4.CString 转化为string
简单的
string a;
CString b;
a = (CStringA)b;
另一种
# include <string>
#include <cstdlib>
using namespace std;
以上是需要在MFC工程中添加的头文件
string CStringToString(CString cstr)
{
string str;
setlocale(LC_ALL,"chs");
wchar_t wch[255];
char temp[255];
wcscpy(wch,cstr.GetString());
wcstombs(temp,wch,254);
str.append(temp);
return str;
}
#include <cstdlib>
using namespace std;
以上是需要在MFC工程中添加的头文件
string CStringToString(CString cstr)
{
string str;
setlocale(LC_ALL,"chs");
wchar_t wch[255];
char temp[255];
wcscpy(wch,cstr.GetString());
wcstombs(temp,wch,254);
str.append(temp);
return str;
}
5.string 转化为CString
string str=“hello中文”;
CString cstr=str.c_str();
6.char*转化为string
string a;
char* b;
string.append(char *)即可
7.char * 转化为string
string a;
char*b = "1nihjkk" ;
a.append(b);
char*b = "1nihjkk" ;
a.append(b);
更多推荐
已为社区贡献1条内容
所有评论(0)