这相当于 std::string 吗?

发布于 2024-11-19 17:30:21 字数 448 浏览 4 评论 0 原文

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

这个答案的第一步是检查修饰/未修饰的名称,这就是我要做的在参数列表中的链接器错误文本中看到:

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

这也是 std::string const & 吗?

感谢您的帮助。

我正在运行 VS 2008。

Trying to track down a LNK2019 Unresolved External Symbol error on a function that has a number of std::string const & arguments.

Step one of this answer says to check decorated / undecorated names, and this is what I'm seeing in the linker error text in the argument list:

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

Is this also std::string const & ?

Thanks for your help.

I'm running VS 2008.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

倥絔 2024-11-26 17:30:21

是的。

作为 C++ 标准化的一部分,std::string 类变得更加兼容 STL。与 STL 容器一样,可以选择元素类型。常见选择是 charwchar_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 are char and wchar_t, but Visual C++ users can also use TCHAR. 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 two T objects, but std::string needs to deal with multi-byte encodings and such complications. These details are wrapped up in class std::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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文