2009-01-29 24 views
3

我一直在學習C++和一些來自80年代的書籍,我不確定它們是C++中的字符串還是非常長的char類型數組。誰能幫忙?C++中有字符串?

回答

11

查看標準庫。

在STL中,您可以找到std :: string類以及一堆其他有用的類。

基本的文檔可以在這裏找到:

http://www.sgi.com/tech/stl/

字符串的文件可以在這裏找到:

http://www.sgi.com/tech/stl/basic_string.html

這些STL字符串的美妙之處在於,他們刪除自己;所以一旦你宣佈他們,你可以讓他們離開,他們會處理他們自己的記憶。對於其他stl類也是如此(當然,如果你聲明一個指針向量,向量將被刪除,但指針指向的內存也必須被處理;它不是一個完全靈丹妙藥,但它很好地工作如果你記住這個限制)。

最後,我發現這本書是學習如何在STL認爲一個真正的好辦法:

Effective STL

6

是的,在C++中有字符串,有人走了,完成了所有的工作併爲你編碼。它們不是實際的語言,而是一個名爲標準模板庫的庫,實際上它總是隨C++編譯器一起提供(您可能已經擁有這些庫)。在內部它們用一個char數組表示,但是它是以一種特殊的方式來完成的,所以如果字符串變大,它會丟棄小的char數組並創建一個新的更大的數組。

你應該真的得到一本新書!

2

@mmr指出C++有一個std :: string。除此之外,幾乎所有的類庫/框架/工具包都提供了(至少)一個 它自己的。除此之外,幾乎每個大型C++項目都會有一個改進,其中包括 一個String庫。

所有這些都是必要的,因爲沒有單一的尺寸適合所有。一些想要的數據複製懶, 一些希望快速插入中間等,有的要UTF-8等。

在所有的可能性,如果項目是否任何嚴重的字符串操作,你最終會 寫一個你自己。

0

在C++中;一個null結束的char數組是一個字符串。儘管如此,像許多其他人已經指出的那樣,各種庫也有一個字符串類來處理常見的字符串操作功能。