skipping the lines

F

friend.blah

Could anyone give a simple idea in solving this
i have a text file which has several millions of lines consisting
around 5 coloums
for example
12345
456789101187837
12536536657588968590680568
36736473647
454785678475767856756
......

the length of string in each line is diffrent...

so when i first read my file i want to take only first line....
when i read it for the second time i want second line skipping the
first line....and so on..

till now what i was doing is

int lineCounter = 1; //declared in initialize function
int row = 1;
bool check = true;

ifstream filein("xxx.txt");
while(check)
{
while(row < LineCounter)
{
filein.ignore(26,'\n'); //here what i am doing is i am
entering the line which has maximum number of characeters .i.e., in
the example my 3rd line has maximum number of characters i.e., 26
row++;
}
getline(filein,Input);
check = false;
}

but i cant check it in file which has millions of lines...

so please tell me smart way to approach this

thanks to all
 
J

Jerry Coffin

Could anyone give a simple idea in solving this
i have a text file which has several millions of lines consisting
around 5 coloums

[ ... ]
so when i first read my file i want to take only first line....
when i read it for the second time i want second line skipping the
first line....and so on..

Each time you read from the file, keep track of the file position after
reading. When you read the file the next time, seek to the previously-
stored position, then read one line and update the file position.
 
M

MiB

You should separate the file open and read operations into different
functions, so the file can stay open between reads, e.g.:

#include <iostream>
#include <fstream>
#include <string>

class Reader {
public:
Reader( const std::string& fname ) : ifs( fname.c_str() )
{}

void DoSomething() {
while ( GetLine() ) {
// Do your task here, 'line' contains the current line.
std::cout << line << std::endl;
}
}

private:
bool GetLine() { return std::getline( ifs, line ); }

std::ifstream ifs;
std::string line;
};


int main() {
Reader reader( "xxx.txt" );
reader.DoSomething();
return 0;
}

best,

Michael Böhnisch
 
X

xyz

You should separate the file open and read operations into different
functions, so the file can stay open between reads, e.g.:

#include <iostream>
#include <fstream>
#include <string>

class Reader {
public:
        Reader( const std::string& fname ) : ifs( fname.c_str() )
        {}

        void DoSomething() {
                while ( GetLine() ) {
                        // Do your task here, 'line' contains the currentline.
                        std::cout <<line<< std::endl;
                }
        }

private:
        bool GetLine() { return std::getline( ifs,line); }

        std::ifstream ifs;
        std::stringline;

};

int main() {
        Reader reader( "xxx.txt" );
        reader.DoSomething();
        return 0;

}

best,

   Michael Böhnisch

you could do this thing
keep track of filepointer after u read the line
int length = 0 //declaare it in intialize

filein.seekg(length,ios::cur);
getline(filein,Input);
length = filein.tellg();

u regularly update the fileposition such that u jump directly to that
line ...u want
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top