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

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


原文出自:http://blog.sina.com.cn/s/blog_6e7fed390100xiiz.html

 在c/c++开发过程中总遇到那种类型转换的问题,很令人头疼,百度到这篇文章后,感觉不错就转载了,感谢作者的辛勤劳作。

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";
x = atof( s );
printf( "atof test: ASCII string: %s/tfloat: %e/n", s, x );

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

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

s = "98854 dollars";
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 constantexpression
    //that is greater then or equal to 256. It is the size of thestream buffer
    //used by setbuf()
    char dest[BUFSIZ]={0};
    
    //Format string determines the conversion specification'sbehaviour
    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. Errnocode:"<<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 avalue"; 
 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());


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值