std :: basic_string的使用

时间:2009-08-21 09:06:13

标签: c++

basic_string类显然被设计为通用容器,因为除了c_str()函数之外,我在其规范中找不到任何特定于文本的函数。出于好奇,你有没有使用std::basic_string容器类来存储人类可读的字符数据?

我之所以这么说是因为人们经常需要在制作一般或特定的东西之间做出选择。设计师选择将std::basic_string类设为通用,但我怀疑它是否曾被这样使用过。

2 个答案:

答案 0 :(得分:4)

它被设计为一个字符串类(例如,length()以及所有那些数十个查找函数),但是在将STL引入std lib后,它被装配成一个STL容器,也是size()和迭代器,<algorithm>使所有查找函数都冗余。

但主要目的是存储角色。使用除POD之外的任何东西都不能保证工作(例如,当使用Dinkumware的std lib时不起作用)。此外,除了std::char_traitschar之外,其他任何内容都不需要wchar_t(尽管许多实现都带有基本模板的合理实现)。

在原始标准中,类不需要将其数据存储在连续的内存中,但这已经随着C ++ 03而改变。

简而言之,它最常用作字符的容器(a.k.a。“string”),其中“character”具有相当宽的定义。

我用它的“最狂野”是用于使用不同的字符类型存储不同编码的字符串。这样,即使它们使用相同的字符大小(ASCII和UTF-8),并且例如,分配导致编译时错误,不同编码的字符串也是不兼容的。

答案 1 :(得分:1)

是的 - 我已经为'unsigned int'实现了状态机。存储/比较状态basic_string已被使用