尝试将从文件中第一个字节读取的文件写入用户指定的字节。我需要有关逻辑的帮助。如果文件只有字母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;
}
答案 0 :(得分:1)
第一个问题 - 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;
}
}