如何在几个空行后打印文件中的输出

时间:2017-08-19 12:54:29

标签: c++ file-io

我想在这里做的是打印单词" hello",首先在开头,然后跳过一些行,然后再次在文件中打印。我需要跳过的行数由用户指定。该文件可能是空的,也可能不是空的,如果它不是空的,我不想更改我需要打印的行以外的数据。如果文件为空,则必须跳过空行并在某些行后仍然打印。

这是我的代码:

#include <iostream>
#include <string>

#include <fstream>
using namespace std;

int main(){
    ifstream f1("temp.txt");
    ofstream f2("temp.txt");

    int r;
    cout << "Enter number of lines to skip:" ;
    cin >> r;

    f2 << "hello";
    string org = "";

    while(--r){

        getline(f1, org);

        cout << "org: "<< endl;

    }

    int pos = f1.tellg();
    cout << "pos: " << pos << endl;
    f2.seekp(pos, f2.beg);
    f2 << "hello";

}

例如,当我输入r = 3时,我收到的输出,文件为空:

org: 
org: 
pos: -1

此外,该文件仍为空。没有输出。 tellg()似乎不起作用。 任何人都知道该怎么做?

1 个答案:

答案 0 :(得分:0)

首先,不要读写同一个文件。文件以不同的模式打开,因此不起作用。但除此之外,解析输入也是一种更好的做法,然后在内存中对其进行操作并写出所需的结果。所以打开文件,阅读感兴趣的内容(你可以存储有趣的行的地图,或者将整个内容读入内存),然后对其进行操作,并写出结果。