c string型別轉換為char 型別

2022-01-22 22:48:14 字數 1090 閱讀 9989

string 是c++標準庫裡面其中乙個,封裝了對字串的操作

把string轉換為char* 有3中方法:

1。data

如: string str="abc";

char *p=str.data();

2.c_str

如:string str="gdfd";

char *p=str.c_str();

3 copy

比如 string str="hello";

char p[40];

str.copy(p,5,0); //這裡5,代表複製幾個字元,0代表複製的位置

*(p+5)='/0'; //要手動加上結束符

cout <

寫c++**會經常使用標準c的東西,兩者攙和起來使用中難免出現型別不匹配,需要轉換,之前經常使用sprintf 將char* 型別轉換為string型別

後來遇到string型別向char *型別轉換,查了一下資料,使用c_str函式,格式為:

string s="1234";

const char *c = s.c_str();

需要注意的是,c_str() 返回值為const char *型別的!

例子:[cpp] view plain copy print?

string add_to = "hello!";  

const string add_on = "baby";  

const char *cfirst = add_to.c_str();  

const char *csecond = add_on.c_str();  

char *copy = new char[strlen(cfirst) + strlen(csecond) + 1];  

strcpy(copy, cfirst);  

strcat(copy, csecond);  

add_to = copy;  

cout << "copy: " << copy << endl;  

delete  copy;  

cout << "add_to: " << add_to << endl;  

Unicode下的CString與char 轉換

在vs2005及以上的環境中,所見工程的預設字符集形式是unicode,而vc6.0中,字符集形式為多位元組字符集 mbcs multi byte character set 這樣導致了許多字元轉換的方法在unicode的環境中不允許使用,強制型別轉換的結果也會變得非常奇怪。如lpctstr與cha...

CString轉換為double 創 轉

cstring轉換為double cstring strfloat float flt 或double fit 不過前面兩種方法在vs2005下執行結果不正確,在vc6.0開發環境下是可以的。說明 網上很多說的都是前兩種方法,結果double值只是字串的第乙個數字。方法一 flt float ato...

vc下cstring轉換為float

2009 07 08 09 57 22 分類 vc型別轉換 字型大小 訂閱 cstring str cstring almost mad float tempfloat 0.0 tempfloat atof str 但是出現這樣的錯誤 error c2664 atof cannot convert ...