1. c++中string到int的轉換c++
1) 在C標準庫裏面,使用atoi:web
#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 能夠用於各類數據類型之間的轉換)spa
#include <sstream>
#include <string>ormstd::string text = "152";
int number;
std::stringstream ss;字符串
ss << text;//能夠是其餘數據類型
ss >> number; //string -> int
if (! ss.good())
{
//錯誤發生
}stringss << number;// int->string
string str = ss.str();
if (! ss.good())
{
//錯誤發生
}it
3) 在Boost庫裏面,使用lexical_cast:ast
#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(),返回沒有」\0「的字符串數組
(2) c_str(),返回有」\0「的字符串數組
(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));