c++中的一些类型转换 : CString,string,int ,long,double,char*,const char*,date等

c++中的一些类型转换 : CString,string,int ,long,double,char*,const char*,date等

 

C/C++ 2009-12-26 12:40:07 阅读1025 评论0   字号:大中小 订阅

1. char* to string

string s(char *);  

注:在不是初始化的地方最好用assign().

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

2. string to const char*

string a="strte";

const char* r=a.c_str();

注意是const的。还要转到char*:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

2.2. const char* to char*

const char* r="123";

char   *p1   =   new   char[strlen(r)+1]; 

strcpy(p1,r); 

附:http://hi.baidu.com/cfans/blog/item/06970ef4b671f366dcc4745d.html

 这个页面是具体讲述区别的。

·············································································································

3. cstring to string

vs2005 Unicode下:

  CStringW   str(L"test");   

  CStringA   stra(str.GetBuffer(0));   

  str.ReleaseBuffer();       

  std::string   strs   (stra.GetBuffer(0));   

  stra.ReleaseBuffer();

 

非Unicode下:

CString cs("test");

std::string str=cs.getBuffer(0);

cs.ReleaseBuffer();

 

注:GetBuffer()后一定要ReleaseBuffer(),否则就没有释放缓冲区所占的空间.

++++++++++++++++++++++++++++++++++++++++++++++++++++

4. double ,int to string

#include <sstream>

using namespace std;

 

stringstream ss; 

string result; 

long n=11111; 

stream << n; //从long型数据输入 

stream >>result; //转换为 string

 

 

===================================================

 

5.char*  to int, double ,long

 

char *s; double x; int i; long l;

 

s = " -2309.12E-15"; /* Test of atof */ 

x = atof( s ); 

printf( "atof test: ASCII string: %s/tfloat: %e/n", s, x );

 

s = "7.8912654773d210"; /* Test of atof */ 

x = atof( s ); 

printf( "atof test: ASCII string: %s/tfloat: %e/n", s, x );

 

s = " -9885 pigs"; /* Test of atoi */ 

i = atoi( s ); 

printf( "atoi test: ASCII string: %s/t/tinteger: %d/n", s, i );

 

s = "98854 dollars"; /* Test of atol */ 

l = atol( s ); 

printf( "atol test: ASCII string: %s/t/tlong: %ld/n", s, l ); 

------------------------------------------------------------------------------------------------

6. string to int ,long ,double             

              int s;

 string str="123";

 stringstream ss;

 ss<<str;//从str输入

 ss>>s;//输出到int

 ss.clear();

 

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

7. date to string

#include <time>

using namespace std;

 

char dateStr [9];

char timeStr [9];

 _strdate( dateStr);

printf( "The current date is %s /n", dateStr);

_strtime( timeStr );

printf( "The current time is %s /n", timeStr);

 

--------实践证明是正确的版本--------------------------------------------------------------

#include <iostream>

#include <ctime>

#include <cerrno>

 

int main()

{

     //Find the current time

     time_t curtime = time(0); 

 

      //convert it to tm

      tm now=*localtime(&curtime); 

 

     //BUFSIZ is standard macro that expands to a integer constant expression 

     //that is greater then or equal to 256. It is the size of the stream buffer 

     //used by setbuf()

     char dest[BUFSIZ]={0};

 

     //Format string determines the conversion specification's behaviour

     const char format[]="%A, %B %d %Y. The time is %X"; 

 

     //strftime - converts date and time to a string

     if (strftime(dest, sizeof(dest)-1, format, &now)>0)

       std::cout<<dest<<std::endl;

     else 

       std::cerr<<"strftime failed. Errno code: "<<errno<<std::endl;

}

 

|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

8.string to cstring

 

+++++++++++++++++++++++++++++++++++++++++++++++++++++

非Unicode下:

int 转 CString:

CString.Format("%d",int);

...............................

string 转 CString  

CString.format("%s", string.c_str());  

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

.......................................

char* 转 CString  

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

 CString strtest;  

 char * charpoint;  

 charpoint="give string a value";  

 strtest=charpoint; //直接付值

.....................................................

CString 转 int

 CString  ss="1212.12";  

 int temp=atoi(ss); //atoi _atoi64或atol

...................................................................................................................................

9.在Unicode下的CString to double 

CSting sTemp("123.567"); 

double dTemp = _wtof(sTemp.GetString());

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值