2010年7月20日 星期二

c_str() 用法 (C/C++)

介紹一下 c_str()的用法:
c_str()
是將一個 AnsiString 的字串轉換成以NULL結尾的字串。一般在 C++ builder 中所通用的字串形式是以 AnsiString 的方式,但是有時候如想使用 win api時,就要以此方式來使用了。
另外,如想以"C"型態的字串轉換成AnsiString的話,可用StrPas的function來轉換。

String str="ABCDE";
char cStr[20];

strcpy(cStr, Str.c_str());
Str = StrPas(cStr);

c_str() 簡而言之~
功能:將String物件轉換成C語言形式的字串常數。

使用格式:
const char* c_str() const;

說明:
c_str() 演算法會把string物件轉換成C語言形式的字串常數,由於轉換之後的字串已經變成常數,因此無法再任意更改。若有特殊原因必須更改字串常數時,應先把字串常數儲存到緩衝區(buffer)之後再予以更改。
(或使用 StrPas() function)

範例:
// strings and c-strings
#include (iostream) <===此括號,請依平時撰寫程式時使用<>劍號
#include (cstring)
#include (string)
using namespace std;

int main()
{
char *cstr, *p;
string str("Please split this phrase into tokens");

cstr = new char[str.size()+1];
strcpy(cstr, str.c_str());

// cstr now contains a c-string copy of str
p = strtok(cstr, " ");
while(p!=NULL) {
cout <<>
p = strtok(NULL, " ");
}

delete[] cstr;
return 0;
}

沒有留言: