我正在读一本关于应用c++的书
需要二进制字符串类来收集和处理二进制数据流。这些数据流可以表示从图像数据到对象内容的任何内容。在这里,笔者也提到了它是像对象流或对象持续。
作者所说的对象流是什么意思?谁能给我一个简单的例子,说明我们如何编写二进制字符串类。
谢谢你的时间和帮助。
发布于 2013-07-23 14:23:29
需要二进制字符串类来收集和操作二进制数据流。
这在本质上意味着字符串(或流)可以包含任意数量的元素(二进制数据;位),这些元素可以表示任何内容,您可以使用类来更改这些元素。
这些数据流可以表示从图像数据到对象内容的任何内容。
您可以随心所欲地处理流(通常只受实现的限制)。例如,可以将原始图像数据加载到流对象中,然后读取单个字节。您还可以将单个字符写入流(或数组),并将其保存为原始图像数据。元素字符串/流并不局限于任何单一的解释。相反,实际的实现/接口定义了这个部分。
在这里,笔者也提到了它是像对象流或对象持续。
这里的“对象流”指的是传输某物。例如,通过网络或端口发送数据(例如,将其用作发送或接收数据的缓冲区)。“对象持久性”是指即使程序不再运行(加载/保存),也保留一些东西(让它持续存在)。
本质上,几乎任何流以及STL中可用的容器都已经是作者所认为的二进制字符串。区别仅仅是分组,例如,您是否能够访问/读取/写入单个位或仅访问字节/单词/其他什么?
要获得真正的“比特流”,只需使用像std::vector<bool>这样简单的东西。这允许您存储布尔值,但您也可以读取它们作为不同的东西(例如,通过将内容转换为整数数组来读取它们)。
但我想说的是,像std::stream这样简单的东西更符合作者的描述:它可以用来保存持久数据,可以用来传输数据,也可以用来以不同的格式/解释存储/加载数据。例如,您可以编写单个位或字节,然后将它们读入整数甚至字符串。
发布于 2013-07-23 14:14:29
作者所说的对象流是什么意思?
它们意味着从程序的一部分发送编码对象值的输出,这样接收代码就可以构造一个具有等效值的对象。这很像持久化(例如,将一个对象保存到磁盘以便稍后加载它),只不过数据不一定放在持久性的某个地方(因此,如果电源关闭,它可能会丢失),但是它会到达其他代码,这些代码可以立即执行重新加载步骤。
例如,如果没有生产级别的错误检查:
struct X { int a; int b; };
std::ostream& operator<<(std::ostream& os, const X& x)
{ return os << x.a << ' ' << x.b; }
std::istream& operator>>(std::istream& is, X& x)
{ return is >> x.a >> x.b; }
X x1 = ...;
std::istringstream iss;
iss << x1;
X x2;
if (iss >> x)
assert(x2 == x1);谁能给我一个简单的例子,说明我们如何编写二进制字符串类。
你没必要..。该标准包括std::string,它可以处理二进制数据。
https://stackoverflow.com/questions/17812585
复制相似问题