我有一个我创建的二进制文件。其中,数据以二进制形式存储,但我将以人类可读的形式显示它;
[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/