[問題] string vs char*

看板C_and_CPP作者 (NI)時間16年前 (2009/07/12 14:45), 編輯推噓12(12025)
留言37則, 14人參與, 最新討論串1/1
對於傳統的c-style string 到底為什麼還會留著呢? 我想都想不通 因為我不管怎麼想 沒有一點是cpp-style string輸給了c-style阿 就算是要用c-style來寫程式 也可以用c++來寫 這樣的話 用c-style不就變得很冗長了嗎 喔我覺得我好像在問一個很笨的問題 不過我真的不懂qq 希望知道的人可以解答一下 我自己的猜測是 淘汰是需要時間的? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.251.212

07/12 22:48, , 1F
使用簡單、結構單純。STL 的 String 對我來說,無法完全掌握
07/12 22:48, 1F

07/12 22:48, , 2F
那就好像你要做一件事,找了個人,能力強但你並不瞭解他的底細
07/12 22:48, 2F

07/12 23:18, , 3F
string超慢
07/12 23:18, 3F

07/12 23:32, , 4F
因為 C 目前還不會消失
07/12 23:32, 4F

07/12 23:33, , 5F
c++相容c89,所以c89有的東西c++都有
07/12 23:33, 5F

07/12 23:33, , 6F
而且如果你做 network programming 的話
07/12 23:33, 6F

07/12 23:34, , 7F
會發現 character array 還滿常需要用到...
07/12 23:34, 7F

07/13 00:15, , 8F
不相容等於前面寫的東西全部翻掉阿...
07/13 00:15, 8F

07/13 00:20, , 9F
不是每個地方都有c++ compiler..
07/13 00:20, 9F

07/13 00:30, , 10F
請問樓上,真的友這種情況嗎?我不太能想像耶
07/13 00:30, 10F

07/13 00:30, , 11F
不是都有很多免費的軟體可以用嗎?還是那些不夠力?
07/13 00:30, 11F

07/13 00:49, , 12F
我猜樓上是講一些embedded system?
07/13 00:49, 12F

07/13 03:02, , 13F
string 不會超慢啊,要作相同的事情 C 不會快到哪
07/13 03:02, 13F

07/13 05:15, , 14F
怎麼可能拿掉,你要人家已經累積了幾百萬行的code都廢掉嗎.
07/13 05:15, 14F

07/13 09:14, , 15F
string 怎麼個慢法?請來段 sample 吧
07/13 09:14, 15F

07/13 09:15, , 16F
char* 有 string 不可取代之處,例如跨 module 時
07/13 09:15, 16F

07/13 09:16, , 17F
但要說 string 慢?這又是一個以誐傳誐了,試一下計算長度
07/13 09:16, 17F

07/13 09:16, , 18F
而且進到 c++ 時代還不瞭解 string 的底細,很難讓人覺得
07/13 09:16, 18F

07/13 09:16, , 19F
是一個稱職的 c++ programmer
07/13 09:16, 19F

07/13 09:32, , 20F
回yoco:我說得淘汰需要時間其實意思差不多:)
07/13 09:32, 20F

07/13 09:33, , 21F
回avhacker:就是用pointer去share data的觀念囉?
07/13 09:33, 21F

07/13 10:30, , 22F
了解string怎麼用就夠了, 未必真的要去了解它底層怎麼
07/13 10:30, 22F

07/13 10:30, , 23F
實作的吧??這不也是C++ OOP的精神之一嗎@_@"
07/13 10:30, 23F

07/13 10:31, , 24F
雖然說就學習的角度來說, 能搞懂它自然更好Orz
07/13 10:31, 24F

07/13 10:56, , 25F
flax:不同compiler實做 string 的方法不同,直接傳會有問
07/13 10:56, 25F

07/13 10:56, , 26F
題,但 char* 則無此問題. 跨平台就更不用說了
07/13 10:56, 26F

07/14 01:06, , 27F
string 底層也是要靠 char* 存放資料,
07/14 01:06, 27F

07/14 01:07, , 28F
直接想成 string 是對 char* 和一些方法的封裝比較簡單,
07/14 01:07, 28F

07/14 01:09, , 29F
另外,把 char 當作是一個 8bit 記憶體空間
07/14 01:09, 29F

07/14 01:12, , 30F
string並沒有比char*慢喔,有實作 reference counting
07/14 01:12, 30F

07/14 01:12, , 31F
在一些情況下,不但省記憶體空間又省拷貝的時間。
07/14 01:12, 31F

07/14 07:57, , 32F
C string 還是比較快 (至少這類assembly超多的)
07/14 07:57, 32F

07/15 12:12, , 33F
快在哪? strlen(str) 嗎? XD
07/15 12:12, 33F

07/16 00:38, , 34F
std::string 只有 strlen 優勢 strcpy strcat strtok
07/16 00:38, 34F

07/16 00:39, , 35F
這類有暴力作法 比傳統快 8 倍 (SSE4.2更是如此)
07/16 00:39, 35F

07/17 19:07, , 36F
這種東西各家 compiler 廠商要實做進 STL 不算難事吧
07/17 19:07, 36F

07/19 15:42, , 37F
永遠等不到實作的 因為有很多限制在 這是 char* 特化用
07/19 15:42, 37F
文章代碼(AID): #1AMVRlpp (C_and_CPP)