阅读量: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
的文件,并获取其大小。然后,我们创建一个缓冲区并将文件内容读取到缓冲区中。接下来,我们设置随机数种子,并在循环中随机读取文件内容。每次迭代时,我们都会生成一个随机位置,将文件指针移动到该位置,并读取一个字符。最后,我们将读取到的字符输出到控制台。