在C++編程中,領導堅持用char而不用string,string有那麼可怕嗎?

Artinna-Lau


在C++中優先使用String是一個良好的習慣。除非是C的死忠者習慣如此,否則應該使用String而不是char。

char是用來處理任何8bit數據類型的,邏輯值、整數、字符ASCII碼等都可以。要用來處理字符串需要使用char[]數組,比較麻煩,也不好控制。

String是一個模板類,它是專門用來處理字符串的,封裝了很多處理字符串的成員函數。並且它是C++標準庫的一部分,是所有C++實現都支持的,也是C++創始人推薦使用的。

術業有專攻,應該用哪一個不難選擇吧。


Assault53484432


string曾經使用COW優化,變成一個有時是值語義有時是引用語義的怪物。而且當使用引用計數時,早期的有些版本居然沒負責線程的競態條件,因此線程不安全了。早期的版本,小長度的字符串也使用堆內存,是性能的大漏勺。string是技術發展的熱點,新技術的試驗場,因此實現五花八門,不能用來做DLL。C+++20出現後,string應該以SSO技術為主流了,小長度字符串不會觸發malloc操作。再配合string_view,也是很高效的。總之,2020年代,用string還是不錯的選擇。


Thomas76


C陷阱與缺陷還是程序員的自我修養裡面講過,char*不會被內存緩存,存儲隱私數據時要用char*,用string可能會導致隱私數據洩露


貓呢個咪的


string 是C++ std裡的模板類。 不是MFC 的CString類。C語言沒有這兩個類。

使用string 最大問題是需要運行時庫,所以無法運行在無vc++201x的電腦上。CString 與char *都不會出現這種情況。

CString 比string更好用。所以如果你編寫MFC程序最好用CString類。

如果使用結構體,必須使用char[],不能用類。特別是網絡封包程序。

考慮到程序能在所有電腦運行,不需要額外安裝運行庫的情況下,只能強制使用char*


輕風扶醉


那就用char[]嘛,然後再封裝一下,用起來來和string一樣方便。


視頻音頻通信呼叫中心


看環境和問題,char 和string 有不同的應用場景。不說明情況,誰知道怎麼回事?總的來說,最大的可能是你懶不願意考慮到底要用char(?)幾,所有的都用了string,所以領導才強制你用char。另外,數據庫定義字段也有char的長度限制,你不過腦都用string等著爆bug吧。真實情況一般都是char用的多也穩定,少部分情況用string。


懶爸爸育兒日記


string是類,看起來很完美,但是以犧牲效率為代價。

如果需要操作內存塊,直接使用char類型的數組或指針會更好。


ScholarMartin


你領導說的是對外接口用char不用string,你自己理解偏差吧


hxh0791


在嵌入式上,char一定好用,string就不一定了。

C在開發效率上的確不去C++,但是至今沒被淘汰,自然有其獨特的優勢。

你可以問問這個前輩,很有可能他會告訴你,這樣寫是為了可移植性。他可能並非不會用string


鴻彡


要看場景。

他說的char,應該是char*或char[]吧

char便於程序員控制,方便不同類型做轉換。char 是接近byte的存放,使用上兼顧了byte和string的便利。當然c++裡面沒有byte這個數據類型。

如果是需要到進行byte一級的處理,甚至是bit的處理,char是有優勢的; 如果只是當做普通字符串使用的話,string更安全。


分享到:


相關文章: