奇妙なエラーがあります: ostringstream の内容を unsigned chars のベクトルにコピーしたい:
vector< uint8_t > buffer;
ostringstream os;
os << num1 << char1 << num2 << char2;
// 1. this will crash
buffer.insert( buffer.end(), os.str().begin(), os.str().end() );
// 2. this also crash
copy( os.str().begin(), os.str().end(), back_inserter( buffer );
string str = os.str();
// 4. this work
buffer.insert( buffer.end(), str().begin(), str().end() );
// 5. this also works
copy( str().begin(), tr().end(), back_inserter( buffer );
Visual Studio 2010 で 1 と 2 がクラッシュする理由がわかりません。
誰かが提案していますか?
編集
解決策は次のとおりです。
vector< uint8_t > buffer;
ostringstream os;
os << num1 << char1 << num2 << char2;
const string& str = os.str();
// 4. this work
buffer.insert( buffer.end(), str().begin(), str().end() );