I'm looking for a way to stream data similar to std::ostringstream but for a vector of bytes instead of std::string . Zeroes are allowed as bytes.What is the most elegant way to do this in STL?
std::ostringstream
std::string
vsaztqbk1#
std::vector<uint8_t> vec = { 1, 2, 3, 4 }; std::copy(vec.cbegin(), vec.cend(), std::ostream_iterator<uint8_t>(std::cout, " "));
请注意:流可能会将值解释为字符,因此将使用流运算符的字符重载。如果要打印整数值,请使用其他类型的int模板化std::ostream_iterator。
std::ostream_iterator
jm81lzqq2#
一点也不优雅(丑陋太善良了),但目前对我很有效。我有一些测试代码,需要检查是否将正确的(二进制)输出写入流。我将输出路由到一个临时文件,并将该文件读回一个向量:
std::ofstream outfile( "temp.hex", std::ios_base::binary | std::ios_base::out ); prog.write_binary( outfile ); outfile.close(); std::ifstream result_file("temp.hex", std::ios_base::binary | std::ios_base::in ); std::istream_iterator<uint8_t> file_end; std::istream_iterator<uint8_t> file_begin(result_file); std::vector<uint8_t> actual; std::copy( file_begin, file_end, std::back_inserter(actual) ); std::remove( "temp.hex" );
现在,结果在“实际”向量中,并准备与我的“预期”向量进行比较。
2条答案
按热度按时间vsaztqbk1#
请注意:流可能会将值解释为字符,因此将使用流运算符的字符重载。如果要打印整数值,请使用其他类型的int模板化
std::ostream_iterator
。jm81lzqq2#
一点也不优雅(丑陋太善良了),但目前对我很有效。
我有一些测试代码,需要检查是否将正确的(二进制)输出写入流。我将输出路由到一个临时文件,并将该文件读回一个向量:
现在,结果在“实际”向量中,并准备与我的“预期”向量进行比较。