只读文本文件中的给定行?

时间:2012-02-13 19:06:36

标签: c++ string file-io

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;
}

5 个答案:

答案 0 :(得分:9)

除非你通过其他方式知道每条线的大小,否则无法做到。然后,您可以添加要跳过的行的大小,并执行seekg以跳到行的开头。

答案 1 :(得分:4)

一般情况下,no:分隔行带有特殊字符,您的程序需要读取所有字符,并计算换行符以便执行您需要的操作。

在特殊情况下,如果您的线条长度相同(在编程比赛中比在实践中更常见),您可以将文件读取指针重新定位到特定位置,并从那里读取您的线条。

P.S。我在实践中看到它的唯一地方是UUENCODEd文件。

答案 2 :(得分:2)

  

无需单步执行所有行?

AFAIK,没有。

答案 3 :(得分:1)

为了读取文件中的一行,您必须了解该行由'\ n'字符分隔。因此,无论如何,您都必须阅读整个文件。

答案 4 :(得分:1)

您可以使用seekg前进到文件中的特定地址。但除非你能保证每条线的长度,否则你无法确定你的随机偏移实际上是从新线开始的。

顺便说一句,问题中的给定代码实际上一次读取一个单词,而不是一次读取一行。要一次阅读整行,请使用std::getline