尝试在具有多个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。
答案 0 :(得分:4)
是。
作为C ++标准化的一部分,std::string
类与STL兼容。与STL容器一样,可以选择元素类型。常见的选择是char
和wchar_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
是友好的名称。