Chciałem stworzyć pewną grę. Gra działa, ale ranking już nie. Dane są pobierane z pliku save. Niestety wyskakuje mi błąd pewien błąd. Domyślam się, że być może to problem z przekonwertowaniem typu string, ale nie wiem do końca tego. Prosiłbym o wyjaśnienie, czemu tak się dzieje.
#include <iostream>
#include <windows.h>
#include <time.h>
#include <fstream>
#include <string>
#include <cstdlib>
#include <algorithm>
using namespace std;
int wybor_menu;
int liczba[5];
void odczytaj()
{
system("cls");
cout<<"RANKING"<<endl<<endl;
string dane;
string pun;
int nr=0;
fstream plik;
plik.open("save.txt"), ios::in;
if(plik.good()==false)
{
cout<<"Plik nie istnieje!";
exit(0);
}
string linia;
int nr_linii=1;
while (getline(plik, linia))
{
switch(nr_linii)
{
case 1: dane [nr] = linia; break; // Tu oznaczony jest błąd
case 2: pun [nr] = atoi(linia.c_str()); break;
break;
}
if (nr_linii==2)
{
nr_linii=1; nr++;
}
nr_linii++;
}
plik.close();
for (int i=1; i<=10; i++)
{
cout<<i<<". "<<dane<<" "<<pun<<endl;
}
}
void zapisz(string naz, int p)
{
fstream plik;
plik.open("save.txt", ios::out | ios::app);
plik<<naz<<endl<<p<<endl;
plik.close();
}
void gra()
{
int a, b, c, d, e, f;
int punkty=0;
string nazwa;
system("cls");
while (true)
{
system("cls");
srand(time(NULL));
for (int i=0; i<=5; i++)
{
liczba[i] = rand()%9+1;
}
cout<<liczba[0]<<" "<<liczba[1]<<" "<<liczba[2]<<" "<<liczba[3]<<" "<<liczba[4]<<" "<<liczba[5]<<endl;
Sleep(2000);
system("cls");
cout<<"Podaj 6 liczb oddzielonych spacja: ";
cin>>a>>b>>c>>d>>e>>f;
if ((a==liczba[0]) && (b==liczba[1]) && (c==liczba[2]) && (d==liczba[3]) && (e==liczba[4]) && (f==liczba[5]))
{
punkty++;
cout<<"Dobrze! Masz juz "<<punkty<<" punktow"<<endl;
Sleep(3000);
}
else if (a!=liczba[0] || b!=liczba[1] || c!=liczba[2] || d!=liczba[3] || e!=liczba[4] || f!=liczba[5])
{
cout<<endl<<"Przegrales! Punkty: "<<punkty<<endl;
cout<<"Podaj swoja nazwe: ";
cin>>nazwa;
zapisz(nazwa, punkty);
exit(0);
}
}
}
int main()
{
cout << "---------------------------------------------------------"<<endl;
cout << " GRA W PAMIEC "<<endl;
cout << "---------------------------------------------------------"<< endl;
cout<<endl<<"1. Start"<<endl;
cout<<"2. Ranking"<<endl;
cout<<"3. Wyjdz z gry"<<endl;
cout<<"Wybierz: ";
cin>>wybor_menu;
switch(wybor_menu)
{
case 1:
gra();
break;
case 2: odczytaj();
case 3:
exit(0);
break;
default:
cout<<endl<<"Wpisales zly znak!"<<endl;
break;
}
return 0;
}
Wyskakuje mi: C:\Users\User\Documents\gra w pamiec\main.cpp|39|error: cannot convert 'std::string {aka std::basic_string<char>}' to 'char' in assignment|
Z góry dzięki :)