gpt4 book ai didi

c++ - 如何用 vstring 替换 std::string?

转载 作者:可可西里 更新时间:2023-11-01 18:36:54 24 4
gpt4 key购买 nike

我最近了解到,几年前库 libstdc++ 包含 vstring(也称为 versa_string),它提供与 std::相同的功能: string,但显然更符合 C++ 标准。我曾尝试使用 vstring 来替代 std::string,但我发现没有简单的方法来做到这一点。

是否有一种简单的方法可以在不更改 libstdc++ 源的情况下将 std::string 替换为 vstring

我可以用别名替换代码中对 std::string 的所有使用,如以下 list 所示。然而,这种方法的问题是,std::string 也在某些地方内部使用,例如在 std::ostringstream 中。这意味着语句 std::ostringstream os; my::string s = os.str(); 不再有效。

namespace my {
#ifdef __GLIBCXX__
using string = __gnu_cxx::__vstring;
#else
using string = std::string;
#endif
}

最佳答案

不,无法用 vstring 替换 std::string,它意味着作为替代字符串类型,而不是 的直接替换std::string

自 GCC 5.1 以来,该库附带了 std::string 的两个实现,对于任何给定的翻译单元,您可以通过 _GLIBCXX_USE_CXX11_ABI 宏选择使用哪个。这两种字符串类型具有不同的损坏名称,因此与链接不兼容。

参见 Dual ABI了解更多详情。

关于c++ - 如何用 vstring 替换 std::string?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23255890/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com