天天看點

VC中int,char,char*,const char*,string等類型轉換

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 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());