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

Nav*_*Nav 2 c++ string stl

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

xan*_*tos 6

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