Re: How to read data (number) from "a.txt"
"ottawajn" <ny_abc2000@yahoo.com> ha scritto nel messaggio
news:6829bc6b-d360-4519-832e-ecf00645d7c6@k13g2000hse.googlegroups.com...
I do not know how to read a file "a.txt ".
The format of the "a.txt" is like this.
2 3 4 5
3 4 5 1
8 3 4 5
9 4 4 21
You may consider the following (commented) code I wrote, just like a simple
working example:
<code>
//////////////////////////////////////////////////////////////////////////
// ReadNumbers.cpp
//////////////////////////////////////////////////////////////////////////
// Remove VS2005/8 warning about sscanf
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <string>
using std::ifstream;
using std::cout;
using std::endl;
using std::cerr;
using std::string;
using std::getline;
//
// Process line read from file
// (parse its content, add record to a collection,
// or whatever...)
//
void ProcessLine( const char * line )
{
// Check pointer ...
// e.g. ATLASSERT( line != NULL );
// The record (stored in a line) is made by
// 4 integer fields.
int a, b, c, d;
// Read record fields using sscanf.
// It is possible to read also using other techniques,
// like string streams, etc.
sscanf( line, "%d %d %d %d", &a, &b, &c, &d );
// Just for test: print read data
cout << "a = " << a
<< ", b = " << b
<< ", c = " << c
<< ", d = " << d
<< endl;
// The read record could be added to a collection
// for further processing ...
}
int main()
{
// Try opening the input file
ifstream inFile( "a.txt" );
if ( !inFile.is_open() )
{
cerr << "Open error." << endl;
return 1;
}
// For each line in file
while ( ! inFile.eof() )
{
// Read current line
string line;
getline( inFile, line );
// Process read line
ProcessLine( line.c_str() );
}
// File closed automatically by ifstream destructor
// (explicit closing is done by inFile.close()).
system("PAUSE");
return 0;
}
</code>
The output for your file is like this:
<output>
a = 2, b = 3, c = 4, d = 5
a = 3, b = 4, c = 5, d = 1
a = 8, b = 3, c = 4, d = 5
a = 9, b = 4, c = 4, d = 21
</output>
I isolated the ProcessLine() function from the general line reading loop (in
main()), so you can do and test whatever you want inside that function (like
adding read data to some collection, or process them, or whatever...).
There are several ways to read files in C++.
You may also use the C-like APIs like fopen(), fclose(), etc. as Alex
suggested.
HTH,
Giovanni