c++ readfile函数如何实现文件的随机读取

avatar
作者
猴君
阅读量:0

在C++中,要实现文件的随机读取,你可以使用<fstream>库中的seekg()tellg()函数来定位文件指针。以下是一个简单的示例:

#include <iostream> #include <fstream> #include <string> #include <vector> #include <ctime> #include <cstdlib>  int main() {     // 打开文件     std::ifstream file("example.txt", std::ios::binary | std::ios::in);     if (!file) {         std::cerr << "无法打开文件" << std::endl;         return 1;     }      // 获取文件大小     file.seekg(0, std::ios::end);     std::streamsize fileSize = file.tellg();     file.seekg(0, std::ios::beg);      // 创建缓冲区     std::vector<char> buffer(fileSize);      // 读取文件内容到缓冲区     if (!file.read(buffer.data(), fileSize)) {         std::cerr << "读取文件失败" << std::endl;         return 1;     }      // 关闭文件     file.close();      // 设置随机数种子     std::srand(std::time(0));      // 随机读取文件     while (fileSize > 0) {         // 生成一个随机位置         std::streamsize randomPos = std::rand() % fileSize;          // 将文件指针移动到随机位置         file.seekg(randomPos, std::ios::beg);          // 读取一个字符         char randomChar;         file.get(randomChar);          // 输出随机字符         std::cout << randomChar;          // 更新文件大小和随机位置         fileSize--;     }      return 0; } 

这个示例中,我们首先打开一个名为example.txt的文件,并获取其大小。然后,我们创建一个缓冲区并将文件内容读取到缓冲区中。接下来,我们设置随机数种子,并在循环中随机读取文件内容。每次迭代时,我们都会生成一个随机位置,将文件指针移动到该位置,并读取一个字符。最后,我们将读取到的字符输出到控制台。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!