|
|
|
#1 |
|
Messages: n/a
Hébergeur: |
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 |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
In article <4fae62b0-6858-4e9e-830e-9eecf6691d4a@
59g2000hsb.googlegroups.com>, friend.blah@googlemail.com says... > 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. -- Later, Jerry. The universe is a figment of its own imagination. |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
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 |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
On Jun 4, 10:02pm, MiB <Michael.Boehni...@gmail.com> wrote:
> 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 |
|
![]() |
| Outils de la discussion | |
|
|