Wczytywanie pliku do char

Witam .

Mam problem a mianowicie , wczytuje plik do tablicy char , i chce aby np aConfig [1] było użyte do sterowania switchem ale cos nie chce dzialać ;/ Zobaczcie na kod :

fstream config;

config.open ("config.cfg");

if (config.good())

{

config >> aConfig;

cout << aConfig [0] << "\n" << aConfig [1] << "\n" << aConfig [2] ;

getch ();

};

if (config.fail())

{

                  cout << "Plik konfiguracyjny nie istnieje !" << endl;

                  cout << "Czy chcesz teraz przeprowadzic konfiguracje ? " << endl;

                  cout << "T/N" << endl;

                  aMenu [0] = getch ();

                  if (aMenu [0] == 84 || aMenu [0] == 116)

                  {

                            system ("cls");

                            cout << "Witamy w kreatorze konfiguracyjnym !" << endl;

                            getch ();

                  };

                  if (aMenu [0] == 78 || aMenu [0] == 110)

                  {

                            system ("cls");

                            cout << "Zostana uzyte ustawienia domyslne" << endl;

                            aConfig [0] = 0 ;

                            aConfig [1] = 0 ;

                            aConfig [2] = 0 ;

                            getch ();

                  };

};

config.close () ;

....

switch (aConfig [2])

{

       case 0 : SetConsoleTextAttribute(hOut,FOREGROUND_INTENSITY | FOREGROUND_GREEN);break;

       case 1 : SetConsoleTextAttribute(hOut,FOREGROUND_INTENSITY | FOREGROUND_RED);break;

       case 2 : SetConsoleTextAttribute(hOut,FOREGROUND_INTENSITY | FOREGROUND_BLUE);break;

};

fstream to się nazywa biblioteka ktora musisz zainkludowac

zamiast

fstream config;

ifstream config;

Dalej przyznam że nie sprawdzalem

@witosx: fstream to klasa dziedzicząca z ifstream i ofstream.

@kalin93: Nie działa, czyli?

Za mało kody pokazałeś. Ale skoro, jak piszesz, aConfig to tablica char to to nie ma prawa działać. Wczytuj najlepiej do stringu. Jeżeli musisz do tablicy to funkcją read(), bo tam określasz jaki rozmiar ma tablica. A takie wczytywanie operatorem >> do char* to nawet dziwne, że na to pozwala biblioteka/kompilator.

Co do tych operatorów to w tej postaci działa bo sprawdzałem , wyświetla tą tablice na ekranie ale sterować już nie chce sprawdzę z tą funkcją .

EDIT : No niestety tez nie działa tzn switch tak jakby ignoruje zawartość tych danych.

A nie możesz wczytywać do stringu? Jest wygodniej po prostu, szczególnie późniejsze operacje na zawartości pliku.

Np. wczytanie całego pliku:

string filename("plik.pl");

	fstream fileIn(filename.c_str());

	if(fileIn.fail()) {

		cerr << filename << " - plik nie istnieje!" << endl;

		exit(1);

	}

	string fileContent, tmp;

	while(getline(fileIn, tmp))

		fileContent.append(tmp + '\n');

	fileIn.close();

	cout << fileContent << endl;

Możliwe że problem polega na tym co masz w pliku. Jeżeli plik masz w postaci tekstowej to pomoże:

...

       case '0' : ...

       case '1' : ...

       case '2' : ...

...

Juz rozwiązałem swój błąd , wystarczy użyć np zamiast 1 kodu ANSCII czyli 49 chyba :wink:

Czyli dokładnie trafiłem w sedno problemu :lol:

nie ma znaczenia czy będzie napisano:

case 49:

czy też:

case '1':

i tak zostanie skompilowano na ten sam kod maszynowy.