Effective STL 第 15 条规定 std::string 至少有 6 种不同的实现。但是,如果我必须知道我正在使用哪个实现,我如何找出我正在使用哪个实现? gcc 的 std::string 不显示源代码(全部在 .so 文件中),那么我如何找到呢? 找不到任何东西here ,那么如果以后我需要查找此类信息,我可以在哪里查找?
最佳答案
看看<string>
标题并查看版权?我要补充一点,据我所知,std::string
是 basic_string<>
的 typedef ,所以是一个模板类。现在,据我所知,只有 Comeau C++ 支持“导出”模板,因此所有其他编译器都需要在头文件中定义和实现模板类。您正在使用 GCC,所以可能在 <string>
中header 你会发现字符串实现的一大块。 (我要补充的是,制作模板“shim”/“代理”来调用非模板化类以最小化编译大小是一个常见的技巧,因此并非所有实现都真正需要位于头文件中,对于std::string
的具体情况可以在 C“字符串”库之上定义许多方法(但可能不会,因为 std::string
将 null
视为有效字符)
关于c++ - 我如何知道我正在使用哪种 STL 字符串实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5455395/