My professor is very smart but expects complete noobs like me to just know how to program c++. I don't understand how the fstream
function works.
I will have a data file with three columns of data. I will have to determine with a logarithm whether each line of data represents a circle, rectangle or triangle - that part is easy. The part I don't understand is how the fstream
function works.
I think I:
#include < fstream >
then I should declare my file object?
ifstream Holes;
then I open it:
ifstream.open Holes; // ?
I don't know what the proper syntax is and I can't find straightforward tutorial. Everything seems way more advanced than my skills can handle.
Also, once I've read-in the data file what is the proper syntax to put the data into arrays?
Would I just declare an array e.g. T[N]
and cin
the fstream
object Holes
into it?
Basic ifstream
usage:
#include <fstream> // for std::ifstream
#include <iostream> // for std::cout
#include <string> // for std::string and std::getline
int main()
{
std::ifstream infile("thefile.txt"); // construct object and open file
std::string line;
if (!infile) { std::cerr << "Error opening file!\n"; return 1; }
while (std::getline(infile, line))
{
std::cout << "The file said, '" << line << "'.\n";
}
}
Let's go further and assume we want to process each line according to some pattern. We use string streams for that:
#include <sstream> // for std::istringstream
// ... as before
while (std::getline(infile, line))
{
std::istringstream iss(line);
double a, b, c;
if (!(iss >> a >> b >> c))
{
std::cerr << "Invalid line, skipping.\n";
continue;
}
std::cout << "We obtained three values [" << a << ", " << b << ", " << c << "].\n";
}
Let me step through each part of reading the file.
#include <fstream> // this imports the library that includes both ifstream (input file stream), and ofstream (output file stream
ifstream Holes; // this sets up a variable named Holes of type ifstream (input file stream)
Holes.open("myFile.txt"); // this opens the file myFile.txt and you can now access the data with the variable Holes
string input;// variable to hold input data
Holes>>input; //You can now use the variable Holes much like you use the variable cin.
Holes.close();// close the file when you are done
Please note that this example doesn't deal with error detection.