如何将包含空字符的字节数组输入 std::iostream?

How do I feed a byte array with null characters into a std::iostream?

我必须将一个包含空字符的字节数组提供给 std::iostream 的派生形式。原始数据如下:

FF 73 00 05 73

我将这块数据存储到一个字符数组中:

char *tmc_command = new char [5];  // array size may vary
SerialStream tmc_receiver_handler; // a derivative of std::iostream

tmc_command [1] = 0xFF;
tmc_command [1] = 0x73;
tmc_command [2] = 0x00; // NULL character, eeeeeehhhh!!! :-(
tmc_command [3] = 0x05;
tmc_command [4] = 0x73;

instance -> tmc_receiver_handler << tmc_command;

执行此操作时,不幸的是,由于空字符,输出停止在位置 2。

因为这只是一个字节数组而不是真正的字符串,我怎样才能让流对象简单地吐出完整的 tmc_command 而不会在空字符处停止?或者我应该使用不同的对象而不是 char []?谢谢。

ostream 插入器运算符用于格式化。如果您不想将数据打印为格式化字符串,则格式化插入运算符不是您想要的。

尝试改用 ostream write() 成员函数。

我会检查写入功能 -- 参考这里 http://www.cplusplus.com/reference/ostream/ostream/write/