以字符编号流式传输
Streaming in a char Number
有没有办法将数字流式传输到无符号字符?
istringstream bytes( "13 14 15 16 17 18 19 20" );
unsigned char myChars[8];
for( int i = 0; i < 8 && !bytes.eof(); i++ )
{
bytes >> myChars[i];
cout << unsigned( myChars[i] ) << endl;
}
此代码当前输出前 8 个非空格字符的 ascii 值:
4951 49 52 49 53 49 54
但我想要的是每个令牌的数值:
13 14 15 16 17 18 19 20
您一次正在阅读一个char
,这意味着您可以'1'
,'3'
,跳过空格,'1'
,'4'
,跳过空格等。
要将值读取为 NUMBERS,您需要使用整数类型作为临时类型:
unsigned short s;
bytes >> s;
myChars[i] = s;
现在,流将读取一个整数值,例如 13、14,并将其存储在 s 中。然后将其转换为带有 myChars[i] = s;
的unsigned char
。
因此,
有很多错误检查,您将绕过这些错误检查来执行此操作,而无需临时检查。例如,分配的每个数字是否适合一个字节,并且bytes
中的数字是否比myChars
元素多?但是假设你已经对那些进行了研究,你可以使用一个istream_iterator<unsigned short>
:
copy(istream_iterator<unsigned short>{ bytes }, istream_iterator<unsigned short>{}, begin(myChars))
现场示例
此处的附加说明:char[]
通常包含以 null 结尾的字符串。假设这不是你的意图,你会礼貌地向读者表明这不是你如何使用它。在 c++11 中,您有 int8_t
/uint8_t
来做到这一点。使用类似以下内容: uint8_t myChars[8]
会使您的代码更具可读性。
相关文章:
- 通过套接字[TCP]传输数据 如何在C / C ++中打包多个整数并使用send() recv()传输数据
- Angelscript从C++传输数组
- 如何将图像传输到c++(dll)中的缓冲区,然后在c#的缓冲区中读/写
- 从服务器传输到客户端的消息不会出现
- USB传输的LibUSB C++格式不同
- 如何在数组中找到最小编号的索引号?
- 在本地网络中通过OpenCV(C++)实时流式传输图像
- 将相机数据从服务器实时流式传输到客户端
- 加密在 Windows、C++ 和 Java 中传输中的数据
- 如何从网站获取数据并将其传输到数据库?
- 贪婪算法编号列表
- 使用蓝牙组件将数据从Android手机传输到串行设备时出现问题
- 在 OpenCV 中应用公式并传输图像
- 为什么在尝试测量函数返回所需的时间时,我的运行时编号是错误的?
- 在不传输的情况下更改 Win32 中的串行端口波特率
- Vulkan 的传输队列系列功能和显卡支持:条件检查是否准确?
- 为什么在为其分配编号后无法显示我的字符串值?
- 如何使用CAPL的诊断功能获取CAN传输的数据(256字节)?
- 如何通过ROS将realsense数据传输到其他设备
- 以字符编号流式传输