1. 程式人生 > >C/C++關於字串string、char*字串陣列與其他型別轉換

C/C++關於字串string、char*字串陣列與其他型別轉換

1. string、const char*與char*之間轉換

1.1 const char*<——>string

  const char*指標常量可以直接賦值給string型別,而string型別可以呼叫c_str( )方法來轉換為const char*型別。

#include<string>
using namespace std;

//const char*轉為string
const char* nzArr = "abcd";
string str = nzArr;

//string轉為const char*
string str("abcd");
const char
* nzArr = str.c_str();//呼叫string的c_str()方法

1.2 const char*<——>char*

  字元指標char*可以直接賦值給指標常量const char*。但是const char*賦值給char*需要去掉指標常量的const屬性。呼叫const_cast用來丟棄變數的const宣告。

//char*轉為const char*
char* nzArr = "abcd";
const char* nzConArr = nzArr;

//const char*轉為char*
const char* nzConArr = "abcd";
char* nzArr = const_cast
<char*>(nzConArr);

1.3 string<——>char*

  這樣從1.1和1.2分析後,我們就可以直接看出char*直接賦值給string,而string需要呼叫const_cast

//char*轉為string
char * nzArr = "abcd";
string str = nzArr;

//string轉為char*
string str = "abcd";
char* nzArr = const_cast<char*>(str.c_str());

2.char*與其他型別之間轉換

  這裡主要是依靠<stdlib.h>

標頭檔案中宣告的函式實現轉換。

2.1 char*轉為double

double atof(const char*) //由於char*可以給const char*賦值,所以相當於char*轉為double

  atof跳過前面的空格字元,直到遇上數字或正負符號才開始做轉換,而再遇到非數字或字串結束時(‘\0’)才結束轉換,並將結果返回。字串可包含正負號、小數點或E(e)來表示指數部分,如123.456或123e-2。

2.2 char*轉為int 

int atoi(const char*) 

2.3 char*轉為long 

long int strtol(const char *nptr,char **endptr,int base);
  ① 引數base代表採用的進位制方式,如base值為10則採用10進位制。可以取值從2到36。
  ② 若引數endptr不為NULL,則會將遇到不合條件而終止的nptr中的字元指標由endptr返回;若引數endptr為NULL,則會不返回非法字串。

char* nzArr = "   12345";
char* endptr;
long nNum =strtol(nzArr,&endptr,10); //nzArr返回12345

char * nzArr = "   123a56";
char* nzptr ;
long lNum = strtol(nzArr,&nzptr,10);//nzArr返回123,nzptr返回a56

2.4 char*轉為double

double strtod(const char*,char** endptr);
endptr參考2.3中說明。

char* nzArr = "12345.667",*endptr;
double dVel = strtod(nzArr,&endptr);//nzArr是12345.667

個人學習記錄,由於能力和時間有限,如果有錯誤望讀者糾正,謝謝!

轉載請註明出處:CSDN 無鞋童鞋。