Chciałam wczytać z pliku znak po znaku plansze i zapisać ją do tablicy 2d. W odpowiedzi dostaję:
, natomiast plik lavel1.txt wygląda tak:
Wczytuję poprzez "file >> _levelData[j][i];", tablica _levelData jest typu char. Czyli pobieram znak char z pliku i wpisuje do tablicy char. W czym może być problem, zmieniając w pliku lavel1.txt znaki na inne, na ekranie pojawiają się wciąż te same:
* * *
Level.cpp
#include "Level.h"
#include<fstream>
Level::Level()
{
}
void Level::load(string fileName)
{
ifstream file;
file.open(fileName);
if (file.fail())
{
perror(fileName.c_str());
system("pause");
exit(1);
}
//zliczam ilosc znakow i linii, do wyznaczenia [line - ] [k | ]
char byte;
static int sign, line;
do
{
byte = file.get();
if (isprint(byte) && !isspace(byte)) sign++; //!isspace - nie jest biały znakiem
else if (byte == '\n') line++;
} while (!file.eof());
//cout << "linie: " << line << endl;
//cout << "znaki: " << sign << endl;
int k = sign / (line + 1);
//cout << "k: " << k << endl;
_levelData = new char*[k];
for (int i = 0; i < k; i++)
_levelData[i] = new char[line];
for (int j = 0; j <= line; j++)
{
for (int i = 0; i < k; i++)
{
file >> _levelData[j][i];
}
}
file.close();
for (int j = 0; j <= line; j++)
{
for (int i = 0; i < k; i++)
{
cout << _levelData[j][i];
}
cout << endl;
}
// zwalnianie pamieci
for (int i = 0; i<k; i++)
delete[] _levelData[i];
delete[] _levelData;
}
* * *
Level.h
#pragma once
#include<iostream>
#include<string>
using namespace std;
class Level
{
public:
Level();
void load(string fileName);
private:
char **_levelData;
};