http://libcxx.llvm.org/がUbuntuまたはGCCで事前にパッケージ化されて利用可能にboost::const_string
なるまで、私は現在非常に賢いパッケージを使用しています。libcxxもデフォルトで _small-string 最適化 (SSO) を使用します。ただし、への出力に対するデフォルトのサポートは不足しています。コード__versa_string
ext/vstring.h
std::string
__versa_string
std::ostream
#include <iostream>
#include <boost/const_string.hpp>
const_string<char> x;
std::cout << x << endl;
x
c-string via を強制しc_str()
ない限り機能しません。
std::cout << x.c_str() << endl;
これはコンパイルされ、期待どおりに動作します。次の行を追加しましたconst_string.hpp
template <typename T>
inline std::ostream & operator << (std::ostream & os, const boost::const_string<T> & a)
{
return os.write(a.data(), a.size());
}
は既に知られており、 のようにを検索して計算する必要がないx.c_str()
ため、これによりパフォーマンスが向上するはずです。私は私のために働いていますが、それがすべての場合に機能するかどうかはわかりません。私は何かを逃しましたか?size()
NULL
c_str()