C int與string的轉化

2021-07-16 10:09:56 字數 1859 閱讀 8763

int本身也要用一串字元表示,前後沒有雙引號,告訴編譯器把它當作乙個數解釋。預設情況下,是當成10進製(dec)來解釋,如果想用8進製,16進製制,怎麼辦?加上字首,告訴編譯器按照不同進製去解釋。8進製(oct)—字首加0,16進製制(hex)—字首加0x或者0x。

string前後加上雙引號,告訴編譯器把它當成一串字元來解釋。

注意:對於字元,需要區分字元和字元表示的數值。比如:char a = 8;char b = 『8』,a表示第8個字元,b表示字元8,是第56個字元。

int轉化為string

1、使用itoa(int to string)

//char *itoa( int value, char *string,int radix);

// 原型說明:

// value:欲轉換的資料。

// radix:轉換後的進製數,可以是10進製、16進製制等。

// 返回指向string這個字串的指標

int aa = 30;

char c[8];

itoa(aa,c,16);

cout

2、使用sprintf

// int sprintf( char *buffer, const char *format, [ argument] … );

//引數列表

// buffer:char型指標,指向將要寫入的字串的緩衝區。

// format:格式化字串。

// [argument]...:可選引數,可以是任何型別的資料。

// 返回值:字串長度(strlen)

int aa = 30;

char c[8];

int length = sprintf(c, "%05x", aa);

cout

int aa = 30;

stringstream ss;

sscout

string s2;

ss>>s2;

cout

4、使用boost庫中的lexical_cast

int aa = 30;

string s = boost:

:lexical_cast(aa);

cout30

3和4只能轉化為10進製的字串,不能轉化為其它進製的字串。

string轉化為int

1、使用strtol(string to long)

string s = "17";

char* end;

int i = static_cast

(strtol(s.c_str(),&end,16));

cout

i = static_cast

(strtol(s.c_str(),&end,10));

cout

int i;

sscanf("17","%d",&i);

cout

sscanf("17","%x",&i);

cout

sscanf("0x17","%x",&i);

cout

string s = "17";

stringstream ss;

ssss>>i;

cout

4、使用boost庫中的lexical_cast

string s = "17";

int i = boost:

:lexical_cast(s);

cout17

C int與string的轉化

int本身也要用一串字元表示,前後沒有雙引號,告訴編譯器把它當作乙個數解釋。預設情況下,是當成10進製 dec 來解釋,如果想用8進製,16進製制,怎麼辦?加上字首,告訴編譯器按照不同進製去解釋。8進製 oct 字首加0,16進製制 hex 字首加0x或者0x。string前後加上雙引號,告訴編譯器...

C int與string的轉化

int本身也要用一串字元表示,前後沒有雙引號,告訴編譯器把它當作乙個數解釋。預設情況下,是當成10進製 dec 來解釋,如果想用8進製,16進製制,怎麼辦?加上字首,告訴編譯器按照不同進製去解釋。8進製 oct 字首加0,16進製制 hex 字首加0x或者0x。string前後加上雙引號,告訴編譯器...

C int與string的轉化

int本身也要用一串字元表示,前後沒有雙引號,告訴編譯器把它當作乙個數解釋。預設情況下,是當成10進製 dec 來解釋,如果想用8進製,16進製制,怎麼辦?加上字首,告訴編譯器按照不同進製去解釋。8進製 oct 字首加0,16進製制 hex 字首加0x或者0x。string前後加上雙引號,告訴編譯器...