2011-07-01 63 views
4

我需要從std :: basic_string只覆蓋長度函數,因爲它對於特定平臺上的自定義字符類型不正確。這是當前的聲明,比方說,CustomStringstd :: basic_string專業

typedef STL::basic_string<CustomChar, STL::char_traits<CustomChar>, STL::allocator<CustomChar> > CustomString; 

我需要的是表現爲CustomString一類,但隨着長度的功能改變。

+1

沒有'STL :: basic_string'這樣的東西。也許你的意思是'std :: basic_string'? –

+0

@尼科爾科拉斯,我忘了改變它,它是標準化合物的別名 – Felics

+2

@尼科爾布拉斯 - 我可以看到你爲什麼會試圖做出這樣的別名,但... ewww!這與使用'begin'和'end'而不是'{'和'}'以及宏''=''''''使代碼看起來像Pascal一樣令人困惑。 –

回答

7

您需要專門設計std::char_traits結構並覆蓋它的static size_t length(const char_type* s);函數來完成此操作。

然後,您甚至不需要在實例化basic_string時指定所有模板參數。下面的定義應該足夠了:

typedef std::basic_string<CustomChar> CustomString;