zoukankan      html  css  js  c++  java
  • C++ 中int,char,string,CString类型转换

     
    1. c++中string到int的转换

    1) 在C标准库里面,使用atoi:

    #include <cstdlib> 
    #include <string>

    std::string text = "152"; 
    int number = std::atoi( text.c_str() ); 
    if (errno == ERANGE) //可能是std::errno 

     //number可能由于过大或过小而不能完全存储 

    else if (errno == ????) 
    //可能是EINVAL 

     //不能转换成一个数字 
    }

    2) 在C++标准库里面,使用stringstream:(stringstream 可以用于各种数据类型之间的转换)

    #include <sstream> 
    #include <string>

    std::string text = "152"; 
    int number; 
    std::stringstream ss;


    ss << text;//可以是其他数据类型
    ss >> number; //string -> int
    if (! ss.good()) 

    //错误发生 
    }

    ss << number;// int->string
    string str = ss.str(); 
    if (! ss.good()) 

     //错误发生 
    }

    3) 在Boost库里面,使用lexical_cast:

    #include <boost/lexical_cast.hpp> 
    #include <string>

    try 

     std::string text = "152"; 
     int number = boost::lexical_cast< int >( text ); 

    catch( const boost::bad_lexical_cast & ) 

     //转换失败 
    }                      

    2.string 转 CString
    CString.format(”%s”, string.c_str());
    用c_str()确实比data()要好;

    3.char 转 CString
    CString.format(”%s”, char*);

    4.char 转 string
    string s(char *);
    只能初始化,在不是初始化的地方最好还是用assign().

    5.string 转 char *
    char *p = string.c_str();

    6.CString 转 string
    string s(CString.GetBuffer());
    GetBuffer()后一定要ReleaseBuffer(),否则就没有释放缓冲区所占的空间.

    7.字符串的内容转换为字符数组和C—string
    (1)  data(),返回没有”“的字符串数组
    (2)  c_str(),返回有”“的字符串数组
    (3)  copy()

    8.CString与int、char*、char[100]之间的转换

    (1) CString互转int

    将字符转换为整数,可以使用atoi、_atoi64或atol。而将数字转换为CString变量,可以使用CString的Format函数。如
    CString s;
    int i = 64;
    s.Format(”%d”, i)
    Format函数的功能很强,值得你研究一下。

    void CStrDlg::OnButton1()
    {
       CString
       ss=”1212.12″;
       int temp=atoi(ss);
       CString aa;
       aa.Format(”%d”,temp);
       AfxMessageBox(”var is ” + aa);
    }

    (2) CString互转char*

    ///char * TO cstring
    CString strtest;
    char * charpoint;
    charpoint=”give string a value”; //?
    strtest=charpoint;

    ///cstring TO char *
    charpoint=strtest.GetBuffer(strtest.GetLength());

    (3) 标准C里没有string,char *==char []==string, 可以用CString.Format(”%s”,char *)这个方法来将char *转成CString。
        要把CString转成char *,用操作符(LPCSTR)CString就可以了。
        CString转换 char[100]
       char a[100];
       CString str(”aaaaaa”);
       strncpy(a,(LPCTSTR)str,sizeof(a));

    转自:http://www.cnblogs.com/sqzxcv/archive/2009/11/30/1613414.html

  • 相关阅读:
    PAT 甲级 1027 Colors in Mars
    PAT 甲级 1026 Table Tennis(模拟)
    PAT 甲级 1025 PAT Ranking
    PAT 甲级 1024 Palindromic Number
    PAT 甲级 1023 Have Fun with Numbers
    PAT 甲级 1021 Deepest Root (并查集,树的遍历)
    Java实现 蓝桥杯VIP 算法训练 无权最长链
    Java实现 蓝桥杯VIP 算法训练 无权最长链
    Java实现 蓝桥杯 算法提高 抽卡游戏
    Java实现 蓝桥杯 算法提高 抽卡游戏
  • 原文地址:https://www.cnblogs.com/LinQianXun/p/4945789.html
Copyright © 2011-2022 走看看