我如何知道我正在使用哪个STL字符串实现?

时间:2011-03-28 06:30:09

标签: c++ string stl

有效STL的第15项说std :: string至少有6种不同的实现。但是如果我必须知道我正在使用哪种实现,我如何找出我正在使用的实现? std :: string的gcc没有显示源代码(它都在.so文件中),所以如何找到? 找不到任何here,所以如果将来我需要查找这些信息,我可以在哪里搜索?

1 个答案:

答案 0 :(得分:6)

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