c++从文件开头读取到指定字节
c++ reading from beginning of file to a specified byte
试图写入从文件的第一个字节读取到用户指定的字节的文件。我在逻辑上需要帮助。例如,如果文件只有字母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()
调用
最后一个问题-这个函数实际上总共调用num + 1
次inFile.get()
。第一个调用在for
循环之前。然后在for
循环中,get()
被称为num
次(即。I = 0,1,2,3…num-1)。您可以通过将for
循环计数器更改为(i = 1; i < num; i++)
或在for
循环之前删除get()
调用来修复此问题。在下面的代码中,我选择了第二种方式:
void run(int num, istream &inFile)
{
char byte;
for(int i = 0; i < num; i++)
{
inFile.get(byte);
cout << byte;
}
}
相关文章:
- 从文件中读取多个字节,并将它们存储在C++中进行比较
- 在java中读取c++字节的位字段
- 读取文件中所有可能的十六进制 16 字节序列并打印每个序列
- std::ifstream::read 不会读取所有 512 字节,并设置 EOF 和失败位
- QDataStream 读取和写入的字节数比 QFile::length() 报告要多
- 如何从保存在 Java 中C++的字节数组中读取数字?
- Async_read_until限制读取的字节大小(Boost::asio)
- 如果由不同的线程写入 8 字节,那么现代英特尔 x86 上的 8 字节读取是否保证理智?
- C++ - 将任何文件的字节读取到无符号字符数组中
- InternetReadFile 填充缓冲区,但返回零字节读取
- ReadFromFile C++具有未知字节读取大小
- 从字节 [] 读取字符串
- C 如何将字节读取为整数enderness独立
- x64 CPU上的原子16字节读取
- 具有重叠I/O的FILE_FLAG_NO_BUFFERING-字节读取为零
- std::数组和字节读取
- 如何发现字节读取是日语还是英语
- 内存的字节读取:"signed char *" vs "unsigned char *"
- TCP Recv使用select()返回1字节读取
- c++字节读取问题