首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++中二进制字符串的实现

C++中二进制字符串的实现
EN

Stack Overflow用户
提问于 2013-07-23 14:07:46
回答 2查看 350关注 0票数 0

我正在读一本关于应用c++的书

需要二进制字符串类来收集和处理二进制数据流。这些数据流可以表示从图像数据到对象内容的任何内容。在这里,笔者也提到了它是像对象流或对象持续。

作者所说的对象流是什么意思?谁能给我一个简单的例子,说明我们如何编写二进制字符串类。

谢谢你的时间和帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-23 14:23:29

需要二进制字符串类来收集和操作二进制数据流。

这在本质上意味着字符串(或流)可以包含任意数量的元素(二进制数据;位),这些元素可以表示任何内容,您可以使用类来更改这些元素。

这些数据流可以表示从图像数据到对象内容的任何内容。

您可以随心所欲地处理流(通常只受实现的限制)。例如,可以将原始图像数据加载到流对象中,然后读取单个字节。您还可以将单个字符写入流(或数组),并将其保存为原始图像数据。元素字符串/流并不局限于任何单一的解释。相反,实际的实现/接口定义了这个部分。

在这里,笔者也提到了它是像对象流或对象持续。

这里的“对象流”指的是传输某物。例如,通过网络或端口发送数据(例如,将其用作发送或接收数据的缓冲区)。“对象持久性”是指即使程序不再运行(加载/保存),也保留一些东西(让它持续存在)。

本质上,几乎任何流以及STL中可用的容器都已经是作者所认为的二进制字符串。区别仅仅是分组,例如,您是否能够访问/读取/写入单个位或仅访问字节/单词/其他什么?

要获得真正的“比特流”,只需使用像std::vector<bool>这样简单的东西。这允许您存储布尔值,但您也可以读取它们作为不同的东西(例如,通过将内容转换为整数数组来读取它们)。

但我想说的是,像std::stream这样简单的东西更符合作者的描述:它可以用来保存持久数据,可以用来传输数据,也可以用来以不同的格式/解释存储/加载数据。例如,您可以编写单个位或字节,然后将它们读入整数甚至字符串。

票数 1
EN

Stack Overflow用户

发布于 2013-07-23 14:14:29

作者所说的对象流是什么意思?

它们意味着从程序的一部分发送编码对象值的输出,这样接收代码就可以构造一个具有等效值的对象。这很像持久化(例如,将一个对象保存到磁盘以便稍后加载它),只不过数据不一定放在持久性的某个地方(因此,如果电源关闭,它可能会丢失),但是它会到达其他代码,这些代码可以立即执行重新加载步骤。

例如,如果没有生产级别的错误检查:

代码语言:javascript
复制
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,它可以处理二进制数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17812585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档