basic_string
類顯然是作爲通用容器設計的,因爲除了c_str()
函數外,我在其規範中找不到任何文本特定的函數。出於好奇,你有沒有使用容器類來存儲人類可讀的字符數據?std :: basic_string的使用
我問這個問題的原因是因爲人們經常不得不做出一般或特定的選擇。設計師們選擇將std::basic_string
課程作爲一般課程,但我懷疑它是否以這種方式使用。
basic_string
類顯然是作爲通用容器設計的,因爲除了c_str()
函數外,我在其規範中找不到任何文本特定的函數。出於好奇,你有沒有使用容器類來存儲人類可讀的字符數據?std :: basic_string的使用
我問這個問題的原因是因爲人們經常不得不做出一般或特定的選擇。設計師們選擇將std::basic_string
課程作爲一般課程,但我懷疑它是否以這種方式使用。
它被設計爲一個字符串類(因此,例如,length()
和所有這些幾十個查找函數),但在STL引入到std lib後,它是配備的也是一個STL容器(因此size()
和迭代器,<algorithm>
使所有查找功能成爲冗餘)。
雖然它的主要目的是存儲字符。使用除POD之外的任何內容都不能保證能夠工作(並且不起作用,例如,在使用Dinkumware的std庫時)。此外,除char
和wchar_t
之外,必要的std::char_traits
不需要用於其他任何內容(儘管許多實現都伴隨着基本模板的合理實現)。
在原始標準中,該類不需要將其數據存儲在連續的內存中,但是這已經隨C++ 03而改變。
總之,它主要用作字符容器(a.k.a.「string」),其中「字符」的定義相當廣泛。
我曾經使用過的「最瘋狂」是用於通過使用不同的字符類型來存儲不同的編碼字符串。這樣,不同編碼的字符串即使使用相同的字符大小(ASCII和UTF-8)也不兼容,例如,賦值會導致編譯時錯誤。
這個變化發生在C++ 03中。 – 2009-08-21 12:05:19
@ltcmelo:謝謝! – sbi 2009-08-21 17:36:01
你是什麼意思的「文本」? – 2009-08-21 09:07:53
不是我,只有字符或wchar或TCHAR – kenny 2009-08-21 09:10:16