Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C++ reading from a text file into a array/string

Here is the code I have so far.

What I need to do is read from two different text files, Matrix A and Matrix B.

I can do this however for each text file matrix I read it only comes up with

1 0 0 

(so basically the first line) where the whole text file for Matrix A is in fact

1 0 0
2 0 0
3 0 0

so does anybody know how I can do this?

Thanks!

#include <iostream>  //declaring variables
#include <iomanip>
#include <string>
#include <fstream>

using namespace std;
string code(string& line);
int main()
{
    ofstream outf;
    ifstream myfile;
    string infile;
    string line;
    string outfile;

    cout << "Please enter an input file (A.txt) for Matrix A or (B.txt) for Matrix B" << endl;
    cin >> infile;   //prompts user for input file

    if (infile == "A.txt")
    {      //read whats in it and write to screen
        myfile.open("A.txt");
        cout << endl;
        getline (myfile, line);
        cout << line << endl;

    }
    else
        if (infile == "B.txt")
        {
            myfile.open("B.txt");
            cout << endl;
            getline (myfile, line);
            cout << line << endl;
        }
        else
    { 
        cout << "Unable to open file." << endl;
    }
        //{
            //while("Choose next operation");
        //}
    return 0;
}
like image 287
user3536870 Avatar asked Apr 19 '14 15:04

user3536870


2 Answers

Well, getline obviously gets one line.

You should read line by line until the end of file, and you can achieve that with, for example:

while (getline(myfile, line))
    out << line << endl;

This means: while there is a line to get from myfile, write that line to the output stream.

like image 149
Eutherpy Avatar answered Oct 20 '22 14:10

Eutherpy


You are reading only once, so this is not a miracle. You will need to use a while or for loop for continous reading. You would be writing something like this:

while (getline (myfile, line))
    cout << line << endl;

This would be the whole code to write:

#include <iostream>  //declaring variables
#include <iomanip>
#include <string>
#include <fstream>

using namespace std;
string code(string& line);
int main()
{
    ofstream outf;
    ifstream myfile;
    string infile;
    string line;
    string outfile;

    cout << "Please enter an input file (A.txt) for Matrix A or (B.txt) for Matrix B" << endl;
    cin >> infile;   //prompts user for input file

    if (infile == "A.txt")
    {      //read whats in it and write to screen
        myfile.open("A.txt");
        cout << endl;
        while (getline (myfile, line))
            cout << line << endl;


    }
    else
        if (infile == "B.txt")
        {
            myfile.open("B.txt");
            cout << endl;
            while (getline (myfile, line))
                cout << line << endl;
        }
        else
    { 
        cout << "Unable to open file." << endl;
    }
        //{
            //while("Choose next operation");
        //}
    return 0;
}
like image 25
lpapp Avatar answered Oct 20 '22 14:10

lpapp