I.引言 在Basic(俺的入门语言),Pascal等语言中都提供了定长字符串类型,各有特色,Basic的 是长度固定,超出截断,不足补空格;;pascal的是最大长度限制在某个范围. 虽然定长字符串有这样那样的缺点(例如长度有限,弄不好会丢失数据;;) 定长字符串还是有一定的好处,主要是: 1.不分配在堆上,从而不会造成内存碎片 2.静态分配内存,分配速度快 因此我写了一个定长字符串类,用作轻量级的字符串.类似于pascal的定长字符串,也采用也采取饱和的方式来处理溢出. II.简介 主要类有: 1. template<;typename T,typename Traits=std::char_traits<;T>; >; class basic_small_string_base;; 这是定长字符串的基类,适用于各种字符类型,当然也支持";火星人的三字节字符";. 模板类的代码主要实现在该类中.该类是抽象类,不能够实例化. 2. template<;typename T, size_t MaxSize, typename Traits=std::char_traits<;T>; >; class basic_small_string;; // : public basic_small_string_base<;T,Traits>; 特定长度的定长字符串模板类.如果C++标准支持模板typedef的话,下面的4的俩类就不用再写了,遗憾的是还不支持,所以他也是抽象类.//其实做成可实例化的类也没任何问题。 3. typedef basic_small_string_base<;char, std::char_traits<;char>; >; small_string_base;; typedef basic_small_string_base<;wchar_t, std::char_traits<;wchar_t>; >; small_wstring_base;; 针对char和wchar_t(我特讨厌这后面的_t这根尾巴)两种字符类型的基类的和默认traits 的typedef.写函数参数类型的时候可以少写几个字, ^=^ 4. template <;size_t MaxSize, typename Traits=std::char_traits<;char>; >; class small_string;; // : public basic_small_string<;char, MaxSize,Traits>; 这是定长字符串的基类,适用于各种字符类型,当然也支持";火星人的三字节字符";. 模板类的代码主要实现在该类中.该类是抽象类,不能够实例化. 2. template<;typename T, size_t MaxSize, typename Traits=std::char_traits<;T>; >; class basic_small_string;; // : public basic_small_string_base<;T,Traits>; 特定长度的定长字符串模板类.如果C++标准支持模板typedef的话,下面的4的俩类就不用 再写了,遗憾的是还不支持,所以他也是抽象类.//其实做成可实例化的类也没任何问题。 3. typedef basic_small_string_base<;char, std::char_traits<;char>; >; small_string_base;; typedef basic_small_string_base<;wchar_t, std::char_traits<;wchar_t>; >; small_wstring_base;; 针对char和wchar_t(我特讨厌这后面的_t这根尾巴)两种字符类型的基类的和默认traits 的typedef.写函数参数类型的时候可以少写几个字, ^=^ 4. template <;size_t MaxSize, typename Traits=std::cha