幽幽
 
posts - 51,  comments - 28,  trackbacks - 0

#include <string> //使用C++标准库的string类时

using namespace std; //同上

#include <sstream>

#include <iostream>

#include <stdlib.h> //要将string类和int类型直接转换最好有这些包含,

//因为自己写一个转换函数比较方便,函数定义参考如下

string getstring ( const int n )

{

std::stringstream newstr;
newstr<<n;
return newstr.str();

}

string 转 CString
CString.format(”%s”, string.c_str());

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

char 转 string
string s(char *);

string 转 char *
char *p = string.c_str();

CString 转 string
string s(CString.GetBuffer());

1,string -> CString
CString.format(”%s”, string.c_str());
用c_str()确实比data()要好.
2,char -> string
string s(char *);
只能初始化,在不是初始化的地方最好还是用assign().
3,CString -> string
string s(CString.GetBuffer());
GetBuffer()后一定要ReleaseBuffer(),否则就没有释放缓冲区所占的空间.

《C++标准函数库》中说的
有三个函数可以将字符串的内容转换为字符数组和C—string
1.data(),返回没有”\0“的字符串数组
2,c_str(),返回有”\0“的字符串数组
3,copy()

—————————————————————

CString与int、char*、char[100]之间的转换- -

CString与int、char*、char[100]之间的转换- -

CString互转int

将字符转换为整数,可以使用atoi、_atoi64或atol。
而将数字转换为CString变量,可以使用CString的Format函数。如
CString s;
int i = 64;
s.Format(”%d”, i)
Format函数的功能很强,值得你研究一下。

void CStrDlg::OnButton1()
{
// TODO: Add your control notification handler code here
CString
ss=”1212.12″;
int temp=atoi(ss);
CString aa;
aa.Format(”%d”,temp);
AfxMessageBox(”var is ” + aa);
}

sart.Format(”%s”,buf);

CString互转char*

///char * TO cstring
CString strtest;
char * charpoint;
charpoint=”give string a value”;
strtest=charpoint;

///cstring TO char *
charpoint=strtest.GetBuffer(strtest.GetLength());

标准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 2008-06-14 05:11 幽幽 阅读(45732) 评论(4)  编辑 收藏 引用 所属分类: 杂集

FeedBack:
# re: 【转】C++ int,char,string,CString类型转换(整理总结)
2009-05-27 14:55 | 黑鼠
呵呵,挺好,
好像有这么一种方法

CString csTemp; //………………
CT2CA caTemp(csTemp);
string strTemp(caTemp);
strTemp………………

搞定  回复  更多评论
  
# re: 【转】C++ int,char,string,CString类型转换(整理总结)
2009-08-08 11:37 | lxm zqs
好像不行啊,我在VS2008里面用的,
///char * TO cstring
CString strtest;
char * charpoint;
charpoint=”give string a value”;
strtest=charpoint;

这个不行的。请你再看看  回复  更多评论
  
# re: 【转】C++ int,char,string,CString类型转换(整理总结)
2009-10-16 17:26 | hengai
@lxm zqs
应该是UNICODE的原因吧。在VS2005中默认的就是UNICODE,VS2008应该也一样。  回复  更多评论
  
# re: 【转】C++ int,char,string,CString类型转换(整理总结)
2010-02-07 17:58 | 游客也
看了博主的文章,看到一个地方相当疑惑:
1.data(),返回没有”\0“的字符串数组
2,c_str(),返回有”\0“的字符串数组
====================================
我在vs03(呵呵,很老了),查看了string 的 data()函数的实现
const _Elem *data() const
{ // return pointer to nonmutable array
return (c_str());
}

很明显是直接调用c_str()函数,从代码理解,那么data()和c_str()是一样效果的
  回复  更多评论
  

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



<2008年8月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456

常用链接

留言簿(6)

随笔分类(35)

随笔档案(51)

文章分类(3)

文章档案(3)

相册

我的链接

搜索

  •  

最新评论

阅读排行榜

评论排行榜