• 【C++ 学习笔记】 变量转换


    Part 1. String - int

    - String -> int

    int = string.atoi();

    - int -> CString

    由于int是变量,CString是类别,所以变量不能直接转换成类别。需要用Format函数

    CString a;
    int b =10;
    a.format("%d", b);

    - CString -> int

    int = atoi(cstr);

    ---------------------------------------------------------------------------------

    Part 2. string, CString, char* 互相转换

    - CString -> string

    可以使用CString中的GetBuffer函数

    CString cstr = "TEST";
    string str= cstr.GetBuffer();

    方法二:取指针

    CString cstr = "TEST";
    string str = LPCSTR(cstr); 

    - string->CString

      方法一:初始化

    string str="TEST";
    CString cstr(str.c_str());
    //或者
    CString cstr(str.data());

      方法二:赋值

    string str="TEST";
    CString cstr = str.c_str();

      方法三:Format

    string str = "TEST";
    CString cstr;
    cstr.Format("%s",str.c_str());

    CString->char*

    方法一: 强制转换

    CString str("TEST");
    LPTSTR lpsz =(LPTSTR)(LPCTSTR)str;

    方法二:使用拷贝方法(_tcscpy)

    CString str = "TEST";
    LPTSTR lpsz = new TCHAR[str.GetLength()+1]; //新建char*的空间
            
    _tcscpy(lpsz, str);    //拷贝

    - string -> char*

    由于string中的c_str()或者data()函数返回的都是const char*,所以需要转换下才行

    方法一:

    string str = "TEXT";
    char* c = const_cast<char*>(str.data());

    方法二:与方法一类似,如下所示

    !注意可是这样子相当于是将string的指针赋值给了指针a,如果之前char*指针有初始化空间的话,那么之前的初始化的空间就丢掉了,会造成了空间泄漏。

    string str = "TEST";
    char* a = (char*)str.c_str();

    方法三:拷贝

     

    - char* -> string

    可以直接转换

    char* c = "TEXT";
    string str = c;

    - string->char[]

    查了很久,似乎只有一位位的赋值了。。不知道有没有高人有别的办法没?

  • 相关阅读:
    PHP excel读取excel文件转换为数组
    PHP输出xls文件
    proxy_redirect参数的作用
    nginx反向代理批量实现https协议访问
    用lua nginx module搭建一个二维码
    canvas操作图片,进行面板画图,旋转等
    线性表
    什么是闭包
    简单注解扫描的思考
    编写自己的validate校验框架原理(转)
  • 原文地址:https://www.cnblogs.com/xiaoka/p/2330688.html
Copyright © 2020-2023  润新知