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 *的转换

        一种方法:
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 char * a;
        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 *”
      解决方法:
      修改为:m_strSQL.Format(L"book_name'%s'",m_strSeek);
      或
      m_strSQL.Format(_T("book_name\'%s\'"),m_strSeek);
      char 占用一个字节 , wchar_t占用两个字节。所以要转换一下。
      不管是不是用unicode,都使用_T("")宏比较好,因为_T("")会自己转换
 

3.const char * 到CString

const char * 到CString可以进行直接转换。
 
      const char * a;
       CString b;
       b=a;//通过
 

4.CString 转化为string

# 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;
}
 
 
 

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);
也可以直接赋值
string s;
char *p = "adghrtyh";
s = p;
cout << s << endl;

8.char[] 转换成string

同上

9.string转const char*

 
有2个函数可以运用。
一个是.c_str(),一个是data成员函数。

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*

用string的一个成员函数copy实现
 
string s1 = "abcdefg";
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 类型转换的更多相关文章

  1. MFC中CString转换成char数组的问题

    由于结构体中用到联合体(联合体需要确定分配内存分配大小)或其它因素,需要用char数组来保存字符串,但是在MFC中一般都是用CString来存放字条串.关于它们之间的转换,在VS2008中有时会出现异 ...

  2. MFC中CString转化为char*

    char* convertCStringToChars(CString string) { int nLength=string.GetLength(); ]; memset(c,,nLength+) ...

  3. MFC中cstring,string和char[]的相互转化

    int 转 CString:CString.Format("%d",int);...............................string 转 CString CSt ...

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

    在写程序的时候,我们经常遇到各种各样的类型转换,比如 char* CString string 之间的互相转换.首先解释下三者的含义. CString 是一种很有用的数据类型.它们很大程度上简化了MF ...

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

    转:char*, char[] ,CString, string的转换 (一) 概述 string和CString均是字符串模板类,string为标准模板类(STL)定义的字符串类,已经纳入C++标准 ...

  6. char*、string、CString各种字符串之间转换

    参考博客: http://blog.csdn.net/luoweifu/article/details/20242307 http://blog.csdn.net/luoweifu/article/d ...

  7. C++ 中int,char,string,CString类型转换

      1. c++中string到int的转换 1) 在C标准库里面,使用atoi: #include <cstdlib> #include <string> std::stri ...

  8. C++ 中 int,char*,string,CString之间相互转换-整理

    <多字符集下> #include <string> //使用C++标准库的string类时, 定义时 std::string str; using namespace std; ...

  9. 【转】char*,const char*和string的相互转换

    1. string转const char* string s = "abc"; const char* c_s = s.c_str(); 2. const char*转string ...

随机推荐

  1. BurpSuite 的使用

    最好用的抓包软件, 不只是抓包软件 IE/Chrome中设置代理的方法是, 打开Internet选项面板->连接->局域网设置->取消勾选的使用自动配置脚本->勾选为LAN使用 ...

  2. 小白日记1:kali环境Wpscan渗透Wordpress

    一.什么是Wpscan?什么是Wordpres? 1.Wpscan WPScan是一款针对wordpress的安全扫描软件:可以扫描出wordpress的版本,主题,插件,后台用户以及爆破后台用户密码 ...

  3. 阿里巴巴Java开发规约Eclipse插件安装及使用

    技术交流群:233513714 插件安装 环境:JDK1.8,Eclipse4+.有同学遇到过这样的情况,安装插件重启后,发现没有对应的菜单项,从日志上也看不到相关的异常信息,最后把JDK从1.6升级 ...

  4. Python的类(一)

    类(Class): 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 类变量:类变量在整个实例化的对象中是公用的.类变量定义在类中且在函数体之外. ...

  5. 手把手教你如何逐步安装OpenStack

    [TechTarget中国原创] 尽管OpenStack官方提供的在线安装教程和分步向导能够为管理员提供很大帮助,但是依然存在很多不尽如人意的地方.因此在Ubuntu上安装OpenStack的过程当中 ...

  6. Erlang OTP学习:supervisor [转]

    转自: http://diaocow.iteye.com/blog/1762895 今天细致的看了下supervisor,现在做个总结: 其中,方块代表supervisor process,它的功能很 ...

  7. 程序员必需知道的Windows Shell命令

    Windows系统本来就很人性化的操作系统,操作很方便,但是对于开发人员来说,有些时候改变一些电脑配置或者执行某些任务来说,使用GUI操作反而事倍功半,因此建议使用Shell命令来提高一下工作效率. ...

  8. Python学习-前台开发-ajax操作

    概述 对于WEB应用程序:用户浏览器发送请求,服务器接收并处理请求,然后返回结果,往往返回就是字符串(HTML),浏览器将字符串(HTML)渲染并显示浏览器上. 1.传统的Web应用 一个简单操作需要 ...

  9. Convert.ToBase64String(Byte[])和Encoding.UTF8.GetString(Byte[])的区别

    Encoding.UTF8.GetString是针对使用utf8编码得到的字符串对应的byte[]使用,可以还原我们能看懂的字符串而Convert.ToBase64String是对任意byte[]都可 ...

  10. HTML5初识Canvas

    HTML5初识Canvas <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...