c++ - 这等同于 std::string 吗?

标签 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。

最佳答案

是的。

作为 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是它的友好名称。

关于c++ - 这等同于 std::string 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6688112/

相关文章:

c++ - 未在此范围内声明“收银员”

c++ - 给出进程的 kill 命令时如何处理分配的内存?

objective-c - 将包含 UTF-8 和空字节的 NSData 转换为字符串

java - 数组递增和 i++ 问题

.net - 如何从 VB.NET 中的枚举中获取描述?

c++ - 如何在 OpenGL 中创建调试标记?

c++ - 在 3D 世界的显示器上的固定位置绘制 2D 文本 - OpenGL

c++ - C++ 标准是否保证插入关联容器失败不会修改右值引用参数?

C++ CppCheck 算法建议(std::find_if 而不是原始循环)相关性

c++ - 不使用 <algorithm> 从 2 个 vector (或列表)中删除相似元素