只读文本文件中的给定行
Read only given line from text file?
C++中有没有一种方法可以获取一个给定大小的随机数,然后从文本文件中读取该行?不需要跨过所有的线?我有这个,它只是一行一行打印出来:
#include <cstdio>
#include<iostream>
#include<fstream>
using namespace std;
int main(int argc, char* argv[]){
ifstream myReadFile;
myReadFile.open("words.txt");
char output[100];
if (myReadFile.is_open()) {
while (!myReadFile.eof()) {
printf("n");
myReadFile >> output;
cout<<output;
}
}
myReadFile.close();
return 0;
}
除非通过其他方法知道每一行的大小,否则无法做到这一点。然后,您可以将要跳过的行的大小相加,并执行seekg
以跳到行的开头。
通常情况下,否:行是用一个特殊字符分隔的,您的程序需要读取所有字符,并计算换行符才能执行所需操作。
在特殊情况下,当你的行都是相同的长度时(这在编程比赛中比在实践中更常见),你可以将文件读取指针重新定位到特定的位置,然后从那里读取你的行。
附言:我在实践中唯一看到它的地方是UUENCODEd文件。
不需要跨过所有的线?
AFAIK,编号
为了读取文件中的一行,您必须了解该行是由'\n'字符分隔的。因此,不管怎样,您都必须读取整个文件。
有一个seekg
,您可以使用它前进到文件中的特定地址。但是,除非你能保证每条线的长度,否则你不能确定你的随机偏移是否真的开始于一条新行。
顺便说一句,问题中给定的代码实际上一次只读一个单词,而不是一次读一行。要一次读取整行,请使用std::getline
。
相关文章:
- 文本文件中的单词链表
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 如何将内容数组写入文本文件?
- 无法通过空白将文本文件行分隔为矢量
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- C++将文本文件中的数据读取到结构数组中
- 在指针的帮助下,文本文件中单词的频率
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 将值从二维数组输出到文本文件
- 如何在c++中从文本文件中逐行读取整数
- 从文本文件中读取时钟时间和事件时间并进行处理
- 如何从文本文件中读取值和数组
- 如何在C++中确定文本文件中的元素是字符还是数字
- C++试图读取一个文件并输出到另一个文本文件
- 如何通过套接字将文本文件的内容从服务器发送到客户端
- 已修改的LinkedList未在文本文件本身中更新
- C++文本文件的获取线
- 为什么C++的文件 I/O 在读取文本文件时忽略初始空行?我怎样才能让它不这样做?
- 打印逐行存储的文本文件
- C++文本文件输入