这相当于std :: string吗?

时间:2011-07-14 03:20:09

标签: c++ string stl linker std

尝试在具有多个std::string const &参数的函数上追踪LNK2019未解析的外部符号错误。

this answer的第一步说检查装饰/未修饰的名称,这就是我在参数列表中的链接器错误文本中看到的内容:

class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &

这也是std::string const &吗?

感谢您的帮助。

我正在运行VS 2008。

1 个答案:

答案 0 :(得分:4)

是。

作为C ++标准化的一部分,std::string类与STL兼容。与STL容器一样,可以选择元素类型。常见的选择是charwchar_t,但Visual C ++用户也可以使用TCHAR。与STL容器一样,内存分配由分配器处理。

但是,字符串与其他容器不同,因为某些方法需要对其元素执行更复杂的操作。 std::set<T>只需比较两个T个对象,但std::string需要处理多字节编码和此类复杂情况。这些详细信息包含在课程std::char_traits<char>中。

因此,在所有这些复杂性的情况下,您最终会得到std::basic_string<char, std::char_traits<char>, std::allocator<char> >。那当然不是很友好,大多数人只需要默认值。 std::string是友好的名称。