如何将包含空字符的字节数组输入 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/
我必须将一个包含空字符的字节数组提供给 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/