c++ - 高效获取数据的算法

标签 c++ algorithm

我有一个我创建的二进制文件。其中,数据以二进制形式存储,但我将以人类可读的形式显示它;

[someOtherData]opalgo$apollo$[someOtherData]
               ^
               ^
               ^
             file pointer

我想在 temp_S 中保存数据“opalgo”,它被声明为字符串。注意,示例中没有显示,我不知道这个地方是什么数据及其长度。

将数据驻留在二进制文件中;

  • 首先,我通过递增文件指针来计算它的长度,并且每次都与“$”进行比较。
  • 其次,我按数据长度返回,对于这种情况|opalgo| = 6.
  • 第三,每次,我取一个字符并将其与字符串连接,字符串用 ""初始化。即 string += temp_Char ;

当然在我看来,上面的算法很乱。我找不到从二进制文件中获取数据的有效方法。现在,我有点惭愧。你能给我一个更好的方法吗?

编辑:我不知道文件大小,但如您所知,我可以使用 seekg 和 tellg 进行计算。

最佳答案

与其分三步完成,还可以全部在第一步完成:在寻找终止符“$”时,只需将字符放入 temp_S。无需计算长度。

std::ifstream input(...);

std::string temp_S;
char c;
while (input.get(c))
{
    if (c == '$')
        break;  // Found terminator, read no more into string
    temp_S += c;
}

关于c++ - 高效获取数据的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8095143/

相关文章:

c++ - 如何在 BeagleBoard 上的 Angstrom Linux 上启动时运行 C++、PortAudio 应用程序?

c++ - 如何在NetBeans(Linux)中链接库?

c - 我需要一个用于定点数学库的快速 96 位对 64 位特定除法算法

algorithm - 给出 n 节点二叉搜索树高度的渐近上界,其中节点的平均深度为 Θ(lg n)

c++ - 返回一个指向 IXMLDOMNode 的指针作为参数……真痛苦

c++ - 在不使用定义的情况下缩短调用/名称

c++ - 使用 SHAppBarMessage 移动任务栏

c# - 用霍纳方案简化算法

algorithm - 二进制数的快速除法算法

algorithm - 依赖循环的复杂性