c – 如何用vstring替换std :: string?

前端之家收集整理的这篇文章主要介绍了c – 如何用vstring替换std :: string?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我最近了解到,自几年以来,库libstdc包含vstring(也称为versa_string),它提供与std :: string相同的功能,但显然更符合C标准.我曾尝试使用vstring作为std :: string的替代品,但我发现没有简单的方法可以做到这一点.

有没有一种简单的方法用vstring替换std :: string而不更改libstdc源?

我可以用别名替换我的代码中std :: string的所有用法,如下面的清单所示.但是,这种方法的问题是,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&C++相关文章