2011-07-14 56 views
1

尝试追踪具有std::string const &参数的函数的LNK2019未解析的外部符号错误。这相当于一个std :: string吗?

步骤的this answer一个说要检查装饰/未修饰的名称,这是我所看到的,在参数列表中的链接错误文本:

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

这也std::string const &

感谢您的帮助。

我正在运行VS 2008.

+1

是的,同样的事情。 –

+1

查看'string'[here]的typedef(http://msdn.microsoft.com/en-us/library/hd5zecz6(v = VS.100).aspx):'typedef basic_string string'并注意到对于basic_string模板的'Traits'和'Allocator'参数的缺省值 –

+0

谢谢Hans和Frank。 – John

回答

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是那个友好的名字。

+0

非常有帮助的MSalters。谢谢! – John

相关问题