我很抱歉火焰std :: string和std :: wstring。它们非常有限,远非线程安全。性能方面,他们也不是那么好。我想念简单的功能:
我发现Qt QString很有用,也找到了CBString http://bstring.sourceforge.net/bstrFAQ.shtml
任何其他建议&比较?谢谢。
答案 0 :(得分:26)
C ++ String Toolkit(StrTk)库是一个免费的库,包含用于C ++语言的强大,优化和可移植的通用字符串处理算法和过程。该库旨在易于使用并集成在现有代码中。
该库具有以下功能:
还有更多......
兼容的C ++编译器:
来源:
答案 1 :(得分:10)
我不确定我是否同意。由于开销,字符串确实不应该是线程安全的,除非引用计数(如果适用)。您想要的大多数其他功能会将字符串转换为垃圾驳船。同样,删除依赖项将会消除它们与流良好协作的能力。
我建议的一件事是我们可以从不可变的字符串类中受益,特别是没有内存所有权或终止的字符串类。我之前写过这些文章并且非常有帮助。
答案 2 :(得分:10)
来自C++ String Algorithms Library的Boost几乎拥有您需要的所有功能。
答案 3 :(得分:3)
Bstring - 虽然我自己从未尝试过,但在他们的网站上提供了功能集和速度。根据您选择的GPL或BSD许可证也是一个很好的自由度。
此外,这个名字表明它更好,所以它们怎么能说谎? :)
答案 4 :(得分:2)
我发现wxString方便使用,它有很多功能。虽然它是更大的库(wxWidgets)的一部分,但是当你只想使用字符串时可能太大了。 当你只使用包含wxString和'少数'其他组件的wxBase时,它也可以在没有GUI组件的情况下工作。
编辑:这是文档的link。它接受std :: string的标准函数以及其他一些函数。当我必须解析一些文本时,我总是发现BeforeFirst()和AfterFirst()非常方便。它的确有很好的记录。
答案 5 :(得分:2)
我强烈建议您使用ICU' UnicodeString
,因为它支持所有常见的字符串操作功能,以及i18n支持。
不知道ICU是什么?以下是Wikipedia的摘录:
Unicode的国际组件(ICU)是成熟的C / C ++和Java库的开源项目,用于Unicode支持,软件国际化和软件全球化。 ICU可广泛移植到许多操作系统和环境中。它为应用程序在所有平台上以及C,C ++和Java软件之间提供相同的结果。 ICU项目由IBM和许多其他公司赞助,支持和使用。
答案 6 :(得分:1)
对于转换,您始终可以分解并使用C库cstdlib。
#include <cstlib>
#include <iostream>
int main()
{
std::string num;
std::cin >> num;
someFunc(atoi(num));
someOtherFunc(atof(num));
return 0;
}
atoi = ascii到整数 atof = ascii to float
对于find,使用在头算法下定义的STL函数“find”,或find_first_of(或类似)。我也相信你可以使用std :: string初始化一个char的向量,但这是猜想。