zoukankan      html  css  js  c++  java
  • 【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[]

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

  • 相关阅读:
    python操作pymysql
    使用raise语句抛出异常
    异常处理
    01.正太分布模型
    常用正则表达式总结(47条)
    Scrapy项目_苏宁图书信息
    Scrapy项目_阳光热线问政平台
    Scrapy 项目:腾讯招聘
    Python爬虫_糗事百科
    Python爬虫_百度贴吧(title、url、image_url)
  • 原文地址:https://www.cnblogs.com/xiaoka/p/2330688.html
Copyright © 2011-2022 走看看