標準庫string類提供了3個成員函式來從乙個string得到c型別的字元陣列,:c_str(),data(),copy(p,n);
1.c_str()是borland封裝的string類中的乙個函式,它返回當前字串的首位址。換種說法,c_str()函式返回乙個指向正規c字串的指標常量,內容與本
string串相同。這是為了與c語言相容,在c語言中沒有string型別,因此必須通過string類物件的成員函式c_str()把string物件轉換成c中的字串樣式。
2.c_str()的原型是:const char*c_str()const;
3,c_str()生成乙個const char*指標,指向空字元終止的陣列,而data()與c_str()類似,但是返回的陣列不以空字元終止。
4.注意:一定要使用strcpy()等函式來操作c_str()返回的指標。
下面的列子就是錯誤的:
char *c;
string str ="122";
c = str.c_str();
上述**會報錯,因為s物件被析構,其類容被處理。
char *cstr,*p;
string str = "1232";
cstr = new char[str.size()+1];
strcpy(cstr,str.c_str());
如果乙個函式要求char*引數,可以使用c_str()方法。
copy(p,n,size_type _off = 0):從string型別物件中至多複製n個字元到字元指標p指向的空間中。預設從首字元開始,但是也可以指定,開始的位置(記住從0開始)。返回真正從物件中複製的字string str ("please split this phrase into tokens");
basic_string :: size_type cc;
char arr[20] = ;
basic_string :: pointer arrayptr = arr;
cc = str.copy(arrayptr,10);
cout << "the number of copied characters in cc is: "<< cc << endl;
cout << "the copied characters array1 is: " <
將char型別轉換為string型別
將char型別轉換為string型別 string的建構函式中有此函式原型 string size t n,char c 因此我們可以直接使用此函式 string s 1,a 建立s並將1個a存入到s中 前面的數字代表多少個 擴充套件將char型別放入到vector容器中 第一種就是 vectorv...
c string型別轉換為char 型別
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...
C 中將char陣列轉換為string
假設c字串定義為char ch hello world 1.向建構函式傳入c字串建立string物件 string str ch 2.使用拷貝建構函式建立string物件 string str ch 3.對已有的string物件呼叫string類內部定義的賦值運算子 string str str c...