C++ 高效获取数据的算法
我有一个我创建的二进制文件。在它里面,数据是以二进制形式存储的,但我将以人类可读的形式显示它,比如C++ 高效获取数据的算法,c++,algorithm,C++,Algorithm,我有一个我创建的二进制文件。在它里面,数据是以二进制形式存储的,但我将以人类可读的形式显示它,比如 [someOtherData]opalgo$apollo$[someOtherData] ^ ^ ^ file pointer 我想把数据“opalgo”保存在temp_S中,它被声明为string 获取驻留在二进制文件中的数据 首先,我通过递增文件指针来计算它的长度,每次都与“
[someOtherData]opalgo$apollo$[someOtherData]
^
^
^
file pointer
我想把数据“opalgo”保存在temp_S中,它被声明为string
获取驻留在二进制文件中的数据
- 首先,我通过递增文件指针来计算它的长度,每次都与“$”进行比较李>
- 其次,我返回数据长度,对于这个例子| opalgo |=6
- 第三,每次,我取一个字符并将其与字符串连接起来,字符串初始化为“”。也就是说,string+=temp_Char李>
编辑:我不知道文件大小,但如你所知,我可以使用seekg和tellg进行计算。不需要分三步进行计算,而是可以在第一步中完成:在查找终止“$”时,只需将字符放入
temp\u
。不需要计算长度
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;
}
不需要分三步来完成,而是可以在第一步中完成:在查找终止字符“$”时,只需将字符放入
temp\u 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;
}
你知道这个文件有多大吗?或者从几KB到几GB?你知道这个文件有多大吗?或者它可能是从几KB到几GB?我计算了长度,因为我确保我获取了所有数据。此外,在某些情况下,我直接使用带有length的ios::read()函数。我计算了length,因为我确保获取了所有数据。此外,在某些情况下,我直接使用具有长度的ios::read()函数。