- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我最近了解到,几年前库 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/
我只是很好奇, - 是否甚至可以从标量变量创建一个 v 字符串而不求助于 eval ? 即,这有效,但使用 eval : my $var = 'v1.2.3'; my $conversion = to
我阅读了一些 GCC 错误报告,那里的人在谈论“vstring”。上网搜索发现http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-
我最近了解到,几年前库 libstdc++ 包含 vstring(也称为 versa_string),它提供与 std::相同的功能: string,但显然更符合 C++ 标准。我曾尝试使用 vstr
我是一名优秀的程序员,十分优秀!