我最近了解到,自几年以来,库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 }