提问人:Neppomuk 提问时间:6/9/2020 更新时间:6/9/2020 访问量:533
如何将带有 null 字符的字节数组馈送到 std::iostream 中?
How do I feed a byte array with null characters into a std::iostream?
问:
我必须将一个包含 null 字符的字节数组馈入 的导数中。原始数据如下所示:std::iostream
FF 73 00 05 73
我将这个数据块存储到一个 char 数组中:
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;
不幸的是,执行此操作时,由于 null 字符,输出将停止在位置 2。
由于这只是一个字节数组而不是一个真正的字符串,我怎样才能让流对象简单地吐出完整的内容而不停在空字符处?或者我应该使用不同的对象而不是?谢谢。tmc_command
char []
答:
1赞
Stephen M. Webb
6/9/2020
#1
ostream 插入器运算符用于格式化。如果不想将数据打印为格式化字符串,则格式化的插入运算符不是您想要的。
请尝试改用 ostream write() 成员函数。
评论
0赞
Neppomuk
6/9/2020
是否有像这样的操纵器,可以关闭空格的抑制?noskipws
0赞
Stephen M. Webb
6/9/2020
空字节不是空格,而是字符串终止符。如果要输出无格式化的数据,则必须使用无格式化输出。
1赞
user13708060
6/9/2020
#2
我会检查写入函数 - 参考这里 http://www.cplusplus.com/reference/ostream/ostream/write/
评论
0赞
Neppomuk
6/9/2020
我刚刚尝试过.它可能不如插入运算符优雅,但至少,这些东西现在可以工作了。谢谢!write ()
上一个:修复引用变量的 C++ 输入问题
下一个:函数未显示数组参数的所需输出
评论