我有一个奇怪的错误:我想将 ostringstream 的内容复制到无符号字符的向量中:
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 );
我不明白为什么 1 和 2 在 Visual Studio 2010 上崩溃。
有人有什么建议吗?
编辑
解决方案是:
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() );