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));