c++中string的一些转换

这是我上次从这里看到的把它给保存了下来,希望对你有用。 
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(),返回没有”\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)); 

posted on 2009-05-31 12:38 Brandon 阅读(444) 评论(0)  编辑 收藏 引用 所属分类: C++


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


<2009年4月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

导航

统计

常用链接

留言簿(2)

随笔分类

随笔档案

文章分类

文章档案

收藏夹

IT WEB

常用链接

牛人BLOG

学习网站

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜