VS2013 MFC C++ CString ,const char , char, string 类型转换
VS2013 测试
以下测试加入头文件:
# include <string>
#include <cstdlib>
using namespace std;
//---------------------------------------------------------------------
//CString to char*
CString myteststr=_T("1234");
const char *a = (const char *)myteststr.GetBuffer(); //获取CString类缓冲区指针
//string to char*
string s1 = "abcdeg";
const char *k = s1.c_str();
const char *t = s1.data();
string str1 = "1234";
a = str1.c_str();
jssztest[0] = *a;
jssztest[1] = *(++a);
jssztest[2] = *(++a);
jssztest[3] = *(++a);
jssztest[4] = *(++a);
jssztest[5] = *(++a);
jssztest[6] = *(++a);
jssztest[7] = *(++a);
jssztest[8] = *(++a);
jssztest[9] = *(++a);
jssztest[10] = *(++a);
CString cstr =(CString)str1.c_str();
int aaa = sizeof(cstr);
int bbb = sizeof(str1);
aaa = sizeof(CString); //4
bbb = sizeof(string); //28
a = (const char *)cstr.GetBuffer();
jssztest[0] = *a;
jssztest[1] = *(++a);
jssztest[2] = *(++a);
jssztest[3] = *(++a);
jssztest[4] = *(++a);
jssztest[5] = *(++a);
jssztest[6] = *(++a);
jssztest[7] = *(++a);
jssztest[8] = *(++a);
jssztest[9] = *(++a);
jssztest[10] = *(++a);
1.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*
CString b;
//a=b;//不存在从CSring到const char *的适当转换函数
a=(const char *)b.GetBuffer();
2.从const char [ ]转换为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);
或
char 占用一个字节 , wchar_t占用两个字节。所以要转换一下。
不管是不是用unicode,都使用_T("")宏比较好,因为_T("")会自己转换
3.const char * 到CString
CString b;
b=a;//通过
4.CString 转化为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;
}
5.string 转化为CString
6.char*转化为string
7.char * 转化为string
char*b = "1nihjkk" ;
a.append(b);
char *p = "adghrtyh";
s = p;
cout << s << endl;
8.char[] 转换成string
9.string转const char*
string s1 = "abcdeg";
const char *k = s1.c_str();
const char *t = s1.data();
printf("%s%s",k,t);
cout<<k<<t<<endl;
10.string转char*
char *data;
int len = s1.length();
data = (char *)malloc((len + 1)*sizeof(char));
s1.copy(data, len, 0);
data[len] = '\0';
printf("%s", data);
cout << data;
11.string转换成char[]
这个由于我们知道string的长度,可以根据length()函数得到,又可以根据下标直接访问,所以用一个循环就可以赋值了。
这样的转换不可直接赋值。
string pp = "dagah";
char p[8];
int i;
for( i=0;i<pp.length();i++)
p[i] = pp[i];
p[i] = '\0';
printf("%s\n",p);
cout<<p;
VS2013 MFC C++ CString ,const char , char, string 类型转换的更多相关文章
- MFC中CString转换成char数组的问题
由于结构体中用到联合体(联合体需要确定分配内存分配大小)或其它因素,需要用char数组来保存字符串,但是在MFC中一般都是用CString来存放字条串.关于它们之间的转换,在VS2008中有时会出现异 ...
- MFC中CString转化为char*
char* convertCStringToChars(CString string) { int nLength=string.GetLength(); ]; memset(c,,nLength+) ...
- MFC中cstring,string和char[]的相互转化
int 转 CString:CString.Format("%d",int);...............................string 转 CString CSt ...
- CString string char* char 之间的字符转换(多种方法)
在写程序的时候,我们经常遇到各种各样的类型转换,比如 char* CString string 之间的互相转换.首先解释下三者的含义. CString 是一种很有用的数据类型.它们很大程度上简化了MF ...
- 转:char*, char[] ,CString, string的转换
转:char*, char[] ,CString, string的转换 (一) 概述 string和CString均是字符串模板类,string为标准模板类(STL)定义的字符串类,已经纳入C++标准 ...
- char*、string、CString各种字符串之间转换
参考博客: http://blog.csdn.net/luoweifu/article/details/20242307 http://blog.csdn.net/luoweifu/article/d ...
- C++ 中int,char,string,CString类型转换
1. c++中string到int的转换 1) 在C标准库里面,使用atoi: #include <cstdlib> #include <string> std::stri ...
- C++ 中 int,char*,string,CString之间相互转换-整理
<多字符集下> #include <string> //使用C++标准库的string类时, 定义时 std::string str; using namespace std; ...
- 【转】char*,const char*和string的相互转换
1. string转const char* string s = "abc"; const char* c_s = s.c_str(); 2. const char*转string ...
随机推荐
- Poweroj:2425-跳台阶(经典递推)
题目链接:https://www.oj.swust.edu.cn/problem/show/2425 跳台阶 Edit Manage Data Rejudge Time Limit: 1000 MS ...
- sql查询题目
--1.查询在1981年入职的员工信息select * from emp where hiredate between '01-1月-1981'and '31-12月-1981'; select * ...
- Java线程和多线程(六)——守护线程
当我们在Java中创建线程的时候,这个线程在默认的情况下是一个用户线程,并且,如果这个线程在运行,那么JVM就不会终结这个应用.和用户线程不同,当一个线程被标记为守护线程的时候,JVM在用户线程结束的 ...
- [WC2002][洛谷P1578]奶牛浴场
洛谷题解里那个人可真是话多呢. 题目描述 由于John建造了牛场围栏,激起了奶牛的愤怒,奶牛的产奶量急剧减少.为了讨好奶牛,John决定在牛场中建造一个大型浴场.但是John的奶牛有一个奇怪的习惯,每 ...
- 6.定制10MINS首页1
原始代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <titl ...
- toolbar menu 字体颜色和大小
Toolbar菜单中menu当中我们大多数都使用图片来按钮,可是有些时候我们也会直接使用文字,文字的颜色如何修改呢. 其实很简单,我们只要修改styles.xml文件中,添加一句 <item n ...
- Hibernate SQL方言
RDBMS 方言 DB2 org.hibernate.dialect.DB2Dialect DB2 AS/400 org.hibernate.dialect.DB2400Dialect DB2 OS3 ...
- Java课程目录
Java课程目录 1 年前 大家收藏一下这篇文章,这是所有课程的目录. 第一周: 第一课:进制及计算机表示 第二课:进制习题课,进一步介绍进制的知识 第三节课:Java语言的品味(一),通过stati ...
- HTML5技巧
HTML5技巧 HTML5 技巧一:当今科技发展的速度真惊人,稍不留神,就可能无法跟上它的步伐.新一代的HTML-HTML5的发展也不停的带给我们新的惊喜,我们将通过这篇文章向大家介绍一些HTML ...
- 剑指Offer - 九度1503 - 二叉搜索树与双向链表
剑指Offer - 九度1503 - 二叉搜索树与双向链表2014-02-05 23:39 题目描述: 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树 ...