看板 C_and_CPP 關於我們 聯絡資訊
對於傳統的c-style string 到底為什麼還會留著呢? 我想都想不通 因為我不管怎麼想 沒有一點是cpp-style string輸給了c-style阿 就算是要用c-style來寫程式 也可以用c++來寫 這樣的話 用c-style不就變得很冗長了嗎 喔我覺得我好像在問一個很笨的問題 不過我真的不懂qq 希望知道的人可以解答一下 我自己的猜測是 淘汰是需要時間的? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.251.212
zlw:使用簡單、結構單純。STL 的 String 對我來說,無法完全掌握 07/12 22:48
zlw:那就好像你要做一件事,找了個人,能力強但你並不瞭解他的底細 07/12 22:48
tiyun:string超慢 07/12 23:18
legnaleurc:因為 C 目前還不會消失 07/12 23:32
freesamael:c++相容c89,所以c89有的東西c++都有 07/12 23:33
freesamael:而且如果你做 network programming 的話 07/12 23:33
freesamael:會發現 character array 還滿常需要用到... 07/12 23:34
adxis:不相容等於前面寫的東西全部翻掉阿... 07/13 00:15
plover:不是每個地方都有c++ compiler.. 07/13 00:20
flax00298:請問樓上,真的友這種情況嗎?我不太能想像耶 07/13 00:30
flax00298:不是都有很多免費的軟體可以用嗎?還是那些不夠力? 07/13 00:30
adxis:我猜樓上是講一些embedded system? 07/13 00:49
UNARYvvv:string 不會超慢啊,要作相同的事情 C 不會快到哪 07/13 03:02
yoco315:怎麼可能拿掉,你要人家已經累積了幾百萬行的code都廢掉嗎. 07/13 05:15
littleshan:string 怎麼個慢法?請來段 sample 吧 07/13 09:14
avhacker:char* 有 string 不可取代之處,例如跨 module 時 07/13 09:15
avhacker:但要說 string 慢?這又是一個以誐傳誐了,試一下計算長度 07/13 09:16
avhacker:而且進到 c++ 時代還不瞭解 string 的底細,很難讓人覺得 07/13 09:16
avhacker:是一個稱職的 c++ programmer 07/13 09:16
flax00298:回yoco:我說得淘汰需要時間其實意思差不多:) 07/13 09:32
flax00298:回avhacker:就是用pointer去share data的觀念囉? 07/13 09:33
VictorTom:了解string怎麼用就夠了, 未必真的要去了解它底層怎麼 07/13 10:30
VictorTom:實作的吧??這不也是C++ OOP的精神之一嗎@_@" 07/13 10:30
VictorTom:雖然說就學習的角度來說, 能搞懂它自然更好Orz 07/13 10:31
avhacker:flax:不同compiler實做 string 的方法不同,直接傳會有問 07/13 10:56
avhacker:題,但 char* 則無此問題. 跨平台就更不用說了 07/13 10:56
nickexe:string 底層也是要靠 char* 存放資料, 07/14 01:06
nickexe:直接想成 string 是對 char* 和一些方法的封裝比較簡單, 07/14 01:07
nickexe:另外,把 char 當作是一個 8bit 記憶體空間 07/14 01:09
nickexe:string並沒有比char*慢喔,有實作 reference counting 07/14 01:12
nickexe:在一些情況下,不但省記憶體空間又省拷貝的時間。 07/14 01:12
wowtiger:C string 還是比較快 (至少這類assembly超多的) 07/14 07:57
avhacker:快在哪? strlen(str) 嗎? XD 07/15 12:12
wowtiger:std::string 只有 strlen 優勢 strcpy strcat strtok 07/16 00:38
wowtiger:這類有暴力作法 比傳統快 8 倍 (SSE4.2更是如此) 07/16 00:39
avhacker:這種東西各家 compiler 廠商要實做進 STL 不算難事吧 07/17 19:07
wowtiger:永遠等不到實作的 因為有很多限制在 這是 char* 特化用 07/19 15:42