c++ - 我如何知道我正在使用哪种 STL 字符串实现?

标签 c++ string stl

Effective STL 第 15 条规定 std::string 至少有 6 种不同的实现。但是,如果我必须知道我正在使用哪个实现,我如何找出我正在使用哪个实现? gcc 的 std::string 不显示源代码(全部在 .so 文件中),那么我如何找到呢? 找不到任何东西here ,那么如果以后我需要查找此类信息,我可以在哪里查找?

最佳答案

看看<string>标题并查看版权?我要补充一点,据我所知,std::stringbasic_string<> 的 typedef ,所以是一个模板类。现在,据我所知,只有 Comeau C++ 支持“导出”模板,因此所有其他编译器都需要在头文件中定义和实现模板类。您正在使用 GCC,所以可能在 <string> 中header 你会发现字符串实现的一大块。 (我要补充的是,制作模板“shim”/“代理”来调用非模板化类以最小化编译大小是一个常见的技巧,因此并非所有实现都真正需要位于头文件中,对于std::string 的具体情况可以在 C“字符串”库之上定义许多方法(但可能不会,因为 std::stringnull 视为有效字符)

关于c++ - 我如何知道我正在使用哪种 STL 字符串实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5455395/

相关文章:

c++ - std::string += 运算符

c++ - 位集超过 32 位?

c++ - 没有为 C++ 类函数指针注册的 python 类

c++ - std::可选 - 使用 {} 或 std::nullopt 构造空?

c++ - 如何在 gdb 中打印长字符串的完整值?

STL unordered_map 因 __m128 值而崩溃

c++ - Qt - 获取QPushButton图标名称

c++ - 将链表存储为数组 C++ 中的索引

c++ - 减少C++中的字符串容量

java - 拆分公式字符串