这相当于 std::string 吗?
尝试在具有多个 std::string const & 参数的函数上查找 LNK2019 未解析的外部符号错误。
这个答案的第一步是检查修饰/未修饰的名称,这就是我要做的在参数列表中的链接器错误文本中看到:
class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &
这也是 std::string const &
吗?
感谢您的帮助。
我正在运行 VS 2008。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是的。
作为 C++ 标准化的一部分,
std::string
类变得更加兼容 STL。与 STL 容器一样,可以选择元素类型。常见选择是char
和wchar_t
,但 Visual C++ 用户也可以使用TCHAR
。与 STL 容器一样,内存分配由分配器处理。但是,字符串与其他容器不同,因为某些方法需要对其元素执行更复杂的操作。
std::set
只需要比较两个T
对象,但std::string
需要处理多字节编码并且这样的并发症。这些详细信息包含在std::char_traits
类中。因此,由于所有这些复杂性,您最终会得到
std::basic_string, std::allocator; >
。这当然不太友好,大多数人只需要默认值。std::string
是它的友好名称。Yes.
As part of the C++ standardization, the
std::string
class was made more STL-compatible. Like the STL containers, the element type can be chosen. Common choices arechar
andwchar_t
, but Visual C++ users can also useTCHAR
. Like STL containers, memory allocation is handled by an allocator.However, strings are unlike other containers because some methods need to perform more complex operations on their elements.
std::set<T>
only needs to compare twoT
objects, butstd::string
needs to deal with multi-byte encodings and such complications. These details are wrapped up in classstd::char_traits<char>
.So, with all this complexity, you end up with
std::basic_string<char, std::char_traits<char>, std::allocator<char> >
. That's of course not very friendly, and most people just need the defaults.std::string
is the friendly name for that.