Boost Property Tree を少しいじっていたところ、この例に出会いました。最終結果をベクトルに変換する必要があったので、あとにもう 1 行追加しました。
write_json(ss, root);
このような:
std::vector<char> testVec(std::begin(ss.str()), std::end(ss.str()));
代わりにこれも試しました:
std::string someString = ss.str()
char* someArray = (char*)someString.c_str();
std::vector<char> someVec(someArray, someArray+sizeof(someArray));
どちらの場合も、次のエラーが発生します。
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
私が間違っていることのヒントはありますか?プロパティ ツリーの問題ではありませんね。文字列からベクトルへの変換の問題です。ベクトルは 1 次元のみであると想定されているため、これは理にかなっていると思いますが、その文字列をベクトルに変換して元に戻す方法がわかりません。