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;
}
答案 0 :(得分:9)
除非你通过其他方式知道每条线的大小,否则无法做到。然后,您可以添加要跳过的行的大小,并执行seekg
以跳到行的开头。
答案 1 :(得分:4)
一般情况下,no:分隔行带有特殊字符,您的程序需要读取所有字符,并计算换行符以便执行您需要的操作。
在特殊情况下,如果您的线条长度相同(在编程比赛中比在实践中更常见),您可以将文件读取指针重新定位到特定位置,并从那里读取您的线条。
P.S。我在实践中看到它的唯一地方是UUENCODEd文件。
答案 2 :(得分:2)
无需单步执行所有行?
AFAIK,没有。
答案 3 :(得分:1)
为了读取文件中的一行,您必须了解该行由'\ n'字符分隔。因此,无论如何,您都必须阅读整个文件。
答案 4 :(得分:1)
您可以使用seekg
前进到文件中的特定地址。但除非你能保证每条线的长度,否则你无法确定你的随机偏移实际上是从新线开始的。
顺便说一句,问题中的给定代码实际上一次读取一个单词,而不是一次读取一行。要一次阅读整行,请使用std::getline
。