[問題] const char * 和 std::string

看板C_and_CPP (C/C++)作者 (Shizuru)時間16年前 (2009/03/31 18:20), 編輯推噓4(4016)
留言20則, 7人參與, 最新討論串1/1
想請教一下這兩個之間的差異 因為在我以前所學過的印象 string = const char * 但是實際上使用卻又不是那麼一回事 想再請問,這兩個之間有辦法作轉換的動作嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.64.183.215

03/31 18:27, , 1F
char* 的字串叫做 C-style string, C++ STL 內的 string
03/31 18:27, 1F

03/31 18:27, , 2F
又是另一個東西了。兩者可以轉換,請看這裡:
03/31 18:27, 2F

03/31 18:28, , 4F
string str; char* a=str.c_str();
03/31 18:28, 4F

03/31 18:35, , 5F
樓上是不正確的,應用 strcpy() 0.0
03/31 18:35, 5F

03/31 18:46, , 6F
這只是寫一個不好的範例出來啦~ 要是你沒對a做啥大事
03/31 18:46, 6F

03/31 18:48, , 7F
基本就像是const char*; 就像偷懶寫char *a="abc";
03/31 18:48, 7F

03/31 18:51, , 8F
非偷懶版 string str;char *a;strcpy(a,str.c_str());
03/31 18:51, 8F

03/31 18:53, , 9F
樓上還是會死. a 沒有 initialize, strcpy 會死得很慘
03/31 18:53, 9F

03/31 19:28, , 10F
哈~ 對耶~ 要先a=new char[str.length()]; 真是sorry
03/31 19:28, 10F

03/31 19:52, , 11F
謝謝各位的指教,那想請教C++的string到底是什麼東西
03/31 19:52, 11F

03/31 19:52, , 12F
因為常常會混淆,所以想趁現在弄清楚些
03/31 19:52, 12F

03/31 19:53, , 13F
其實你實際寫寫看就知道它們的差異了 應該超明顯的...
03/31 19:53, 13F

03/31 19:53, , 14F
根據g大給的資料,看起來似乎是個class
03/31 19:53, 14F

03/31 19:54, , 15F
我有試過,compiler跑出一長串的東西
03/31 19:54, 15F

03/31 19:54, , 16F
他說那一長串就是C++ string,不過看不太懂
03/31 19:54, 16F

03/31 19:55, , 17F
它就是一個 class,有一大堆 member function 可以用 XD
03/31 19:55, 17F

03/31 19:56, , 18F
原來如此,感謝j大以及樓上的各位解說
03/31 19:56, 18F

04/01 04:28, , 19F
a指向str.c_str()當然沒問題 又沒說要寫
04/01 04:28, 19F

04/01 04:47, , 20F
問題是其狀態不穩定,str的下個操作可能會break掉a
04/01 04:47, 20F
文章代碼(AID): #19qUvpYE (C_and_CPP)
文章代碼(AID): #19qUvpYE (C_and_CPP)