有没有办法改变unsigned char
输出格式BOOST_CHECK_EQUAL_COLLECTIONS
?
我正在使用 Boost.Test 1.37.0 来验证 unsigned char 数组中的值:
// result.Message is a fixed-size unsigned char array
// result.Length is the length of the data inside result.Message
const unsigned expected_message[] = { 3, 60, 43, 17 };
BOOST_CHECK_EQUAL_COLLECTIONS(
result.Message,
result.Message + result.Length,
expected_message,
expected_message + sizeof(expected_message) / sizeof(*expected_message) );
我在不匹配时得到不可打印的字符:
test_foo.cpp(117): error in "test_bar": check { result.Message, result.Message + result.Length } == { expected_message, expected_message + sizeof(expected_message) / sizeof(*expected_message) } failed.
Mismatch in a position 1: != 60
Mismatch in a position 2: < != 43
Mismatch in a position 3: != 17
我暂时更改expected_message
为一个unsigned
数组,因此它打印数字而不是字符 - 同样,我可以复制result.Message
到一个新的vector<unsigned>
并与之进行比较:
vector<unsigned> result_message(result.Message, result.Message + result.Length);
这并不可怕,但如果可能的话,我更愿意与原版进行比较。
在内部,BOOST_CHECK_EQUAL_COLLECTIONS
正在使用stringstream
我无法访问的临时文件,但这让我对ostream
格式化感到疑惑。
我在处理方面和语言环境方面没有很多经验,但我想知道是否可以使用它们以某种方式使个人unsigned char
s 打印为数字而不是 ASCII?