gpt4 book ai didi

c++ seekg() 读取特定数字

转载 作者:行者123 更新时间:2023-11-30 04:00:10 25 4
gpt4 key购买 nike

我有一个文本文件:

1 2 3 4 5 6 7 8 9 

我想用seekg()读取一个特定的数字

ifstream fr("duomenys.txt");
fr.seekg(2,ios::beg);
int n;
fr >> n;
cout << n;

如果我将位置设置为 1、2 或 3,读取的数字是正确的,但使用其他位置,它返回更早的数字,例如位置 3 和 4 都返回 3,位置 5 和 6 都返回 4。如果我'是的,这是因为数字之间的空格而发生的,但我不明白,为什么如果位置是 3,它返回数字 3,而不是预期的 2,因为 2 和 3 之间的空格?还有一个问题,我应该如何实现我的功能,我可以使用他的位置从文件中获取特定数字?我正在尝试像文件中的数组那样做,例如,A[i] 从索引 i 处的数组返回项目,因此我的函数 (i) 应该从文件中返回索引 i 处的项目。

最佳答案

简单的回答是你不能。在文本文件中,seekg 的参数必须是从先前的返回值tellg,除了少数异常(exception),您可以搜索到文件的开头或结尾。寻求位置 5,对于例如,没有任何意义。

如果你用二进制打开文件,你可以多做一点,但搜索位置仍将以字节为单位;你必须知道每个数字在文件中的确切位置。在文件中你已经提出,位置将是 0、2、4 ......等等。但是这假设每个数字正好是一个数字,并且正好是一个空格将它们分开,这可能不现实。

对于像您这样的小型数据集(至少在示例中),显而易见的解决方案就是将所有数据读入std::vector,并对其进行索引。对于非常大的数据集:该文件必须明确写入以支持读取,在二进制模式,每个数字有固定数量的字符(包括任何分隔符)。然后你可以寻找 i * n,其中 i 是你想要的位置,n 是字符数每个数字。但同样,仅在二进制模式下,读取和写作。

关于c++ seekg() 读取特定数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26482041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com