您的位置:首页 > 其它

各种数据类型之间的转换

2015-07-09 10:11 387 查看
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());

CString cs = string.c_str();

用c_str()确实比data()要好;

3.char 转 CString

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

4.char 转 string

string s(char *);

只能初始化,在不是初始化的地方最好还是用assign().

string s;

s.assign(const char *s);

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));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: