gpt4 book ai didi

c++ 从文件开头读取到指定字节

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:28:15 24 4
gpt4 key购买 nike

尝试写入一个文件,该文件从文件中的第一个字节读取到用户指定的字节。我需要逻辑上的帮助。例如,如果文件只有字母 a 到 z,而我只想读取并显示前 10 个字母。这是我写的一段:

  char byte;
inFile.seekg(0L,ios::beg);
inFile.get(byte);
cout << byte;

for(int i = 0; i < num; i++); //num is an int specified by the user.
{
inFile.seekg(1, ios::cur);
inFile.get(byte);
cout << byte;
}

最佳答案

第一个问题 - for() 末尾的分号行:

    for(int i = 0; i < num; i++);
{
...
}

编译器看到的其实是这样的:

    for(int i = 0; i < num; i++) { /* do nothing num times */ }

{
// code that will only run once
}

所以,删除分号。

接下来,如果您只是连续读取字节,则无需在每个字节之间查找。只需调用 get()将获得序列中的下一个字节。所以删除 seekg()电话。

最后一个问题 - 这个函数实际上是在调用 inFile.get()num + 1次。第一个电话在 for 之前环形。然后在for循环,get()叫做num次(即 i = 0、1、2、3 ... num-1)。您可以通过更改 for 来解决此问题循环计数器 (i = 1; i < num; i++)或者只是删除 get()for 之前调用环形。在下面的代码中,我选择了第二种方式:

void run(int num, istream &inFile)
{
char byte;

for(int i = 0; i < num; i++)
{
inFile.get(byte);
cout << byte;
}
}

关于c++ 从文件开头读取到指定字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15823255/

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