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

  • 相关阅读:
    【SCOI 2011】 糖果
    【POJ 3159】 Candies
    【POJ 1716】 Integer Intervals
    【POJ 2983】 Is the information reliable?
    【POJ 1364】 King
    【POJ 1201】 Intervals
    【POJ 1804】 Brainman
    6月10日省中提高组题解
    【POJ 3352】 Road Construction
    【POJ 1144】 Network
  • 原文地址:https://www.cnblogs.com/LinQianXun/p/4945789.html
Copyright © 2011-2022 走看看