Read char from txt file in C++

I have a program that will read the number of rows and columns from a txt file. Also, the program has to read the contents of a 2D array from the same file.

Here is the txt file

8 20
 *       
  *
*** 


         ***

8 and 20 are the number of rows and columns respectively. The spaces and asterisks are the contents of the array, Array[8][20] For example, Array[0][1] = '*'

I did make the program reading 8 and 20 as follow:

ifstream myFile;
myFile.open("life.txt");

if(!myFile) {
    cout << endl << "Failed to open file";
    return 1;
}

myFile >> rows >> cols;
myFile.close();

grid = new char*[rows];
for (int i = 0; i < rows; i++) {
    grid[i] = new char[cols];
}

Now, how to assign the spaces and the asterisks to to the fields in the array?

I did the following, but it didn't work

for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            while ( myFile >> ch )
            {
            grid[i][j] = ch;
            }
        }
    }

I hope you got the point.

Answers


#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

int main()
{
    ifstream myFile("file.txt");

    if(!myFile) { 
      cout << endl << "Failed to open file";
        return 1;
    }

    int rows = 0, cols = 0;
    myFile >> rows >> cols;

    vector<vector<char> > grid(rows, vector<char>(cols));
    for(int i = 0;i < rows;i++)
    {
        for(int j = 0;j < cols;j++)
        {
            if(myFile.fail()) {cout << "Improper data in file" << endl;}
            myFile >> grid[i][j];
        }
    }
    myFile.close();

    //Printing the grid back
    std::cout << "This is the grid from file: " << endl;
    for(int i = 0;i < rows;i++)
    {
        cout << "\t";
        for(int j = 0;j < cols;j++)
        {
            cout << grid[i][j];
        }
        cout << endl;
    }
}

You can do something like this:

for (int y = 0; y < rows; y++) {
    for (int x = 0; x <= cols; x++) {
        char ch = myFile.get();
        if (myFile.fail()) <handle error>;
        if (ch != '\n') grid[y][x] = ch;
    }
}

Need Your Help

jQM - How to create image button?

jquery jqmobi

I am trying to create a button with an image on it. No text. I used the following and it's not working. Am I missing something?

Checkbox vs Radiobox

html

I have to display a form and the users must decide on selecting just one or no option.

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.