私はファイルからstd::wstring
に非常に大きなXMLファイルをロードする必要があるC++プロジェクト(VS2008
を使用しています)に取り組んでいます。std :: stringのサイズを変更する最も速い方法は何ですか?
//std::wstring str;
//size_t ncbDataSz = file size in bytes
str.resize(ncbDataSz/sizeof(WCHAR));
をしかし、私の現在の問題はresize
方法は、(私はちょうどx64
で、データの3ギガバイトとそれをテストし、より大きな文字列サイズのため、多少時間がかかることである。現在、データがロードされる前に、次の行には、メモリを確保しプロジェクト、デスクトップPCで12GB
の空きRAMがあり、完了に約4〜5秒かかった)
std::string
のサイズを変更する高速化された(最適化された)方法がありますか?私はWindowsのみを求めています。
'std :: string :: reserve'は' std :: string :: resize'を予約します。 IMを上書きするmediate、私は思います。 – LogicStuff
サイズを変更するか予約しますか? – user463035818
@LogicStuff: '予約'は奇妙な獣です。それはメモリを "予約"しますが、それを連続したバイト配列として直接アクセスすることはできません。私はそれに 'append'を呼び出す必要があります。その場合、このタイプの最適化は私には役に立たない。 – c00000fd