Witam,
Tak jak w temacie jak odczytać polskie znaki z pliku txt?
To mój kod:
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <conio.h>
#include <cstring>
#include <windows.h>
#include <cstdlib>
#include <algorithm>
#include <string>
using namespace std;
const WCHAR PIERWIASTEK = 8730;
void writeUnicode( PCWSTR sText )
{
int bufferSize = WideCharToMultiByte( CP_UTF8, 0, sText, - 1, NULL, 0, NULL, NULL );
char * m = new char[ bufferSize ];
WideCharToMultiByte( CP_UTF8, 0, sText, - 1, m, bufferSize, NULL, NULL );
wprintf( L"%S", m );
delete[] m;
}
void writeUnicode( WCHAR cChar )
{
WCHAR sText[ 2 ] = { cChar };
writeUnicode( sText );
}
char *tr(char *str)
{
static char buff[256];
char cp[]="\245\206\251\210\344\242\230\276\253\244\217\250\235\343\340\227\275\215ąćęłńóśżźĄĆĘŁŃÓŚŻŹ";
if(strlen(str)>=sizeof(buff)) return str;
char *bf=buff;
while(*str)
{
char *pos=strchr(cp+18,*str);
*(bf++)=pos?*(pos-18):*str;
++str;
}
*bf=0;
return buff;
}
int monety, monety_z_pliku, wybor, wybierz_quiz;
//do odczytu z pliku
string temat, nick;
string tresc[5];
string odpA[5], odpB[5], odpC[5], odpD[5];
string poprawna[5];
string odpowiedz;
//Do fstream
int nr_linii=1;
string linia;
int nr_pytania=0;
int punkty=0;
int wybor_quizu()
{
HANDLE hOut;
hOut = GetStdHandle( STD_OUTPUT_HANDLE );
cout << "--------------------"<<endl;
SetConsoleTextAttribute(hOut, 0x0006);
cout << tr("Dostępne quizy:")<<endl;
SetConsoleTextAttribute(hOut, 0x00080);
cout << tr("1.World Of Tanks")<<endl;
SetConsoleTextAttribute(hOut, 0x0002);
cout << tr("2.Minecraft")<<endl;
SetConsoleTextAttribute(hOut, 0x0004);
cout << tr("3.Programowanie w c++")<<endl;
SetConsoleTextAttribute(hOut, 0x0001);
cout << "--------------------";
cout << tr("Twój wybór:");
wybierz_quiz=getch();
switch(wybierz_quiz)
{
case '1':
{
fstream plik;
plik.open("quizy/wot.txt",ios::in);
if (plik.good()==false)
{
cout<<"Nie udalo sie otworzyc pliku!";
exit(0);
}
while(getline(plik,linia))
{
switch(nr_linii)
{
case 1: temat=linia; break;
case 2: nick=linia; break;
case 3: tresc[nr_pytania] = linia; break;
case 4: odpA[nr_pytania] = linia; break;
case 5: odpB[nr_pytania] = linia; break;
case 6: odpC[nr_pytania] = linia; break;
case 7: odpD[nr_pytania] = linia; break;
case 8: poprawna[nr_pytania] = linia; break;
}
if (nr_linii==8) {nr_linii=2; nr_pytania++;}
nr_linii++;
}
plik.close();
for (int i=0; i<=9; i++)
{
cout<<endl<<tresc[i]<<endl;
cout<<"A. "<<tr(odpA[i])<<endl;
cout<<"B. "<<tr(odpB[i])<<endl;
cout<<"C. "<<tr(odpC[i])<<endl;
cout<<"D. "<<tr(odpD[i])<<endl;
cout<<"Twoja odpowiedz: ";
cin>>odpowiedz;
transform(odpowiedz.begin(), odpowiedz.end(), odpowiedz.begin(), ::tolower);
if (odpowiedz==poprawna[i])
{
cout<<"Dobrze! Zdobywasz punkt!"<<endl;
punkty++;
}
else cout<<"Zle! Brak punktu! Poprawna odpowiedz: "<<poprawna[i]<<endl;
}
}
case '2':
{
}
case '3':
{
}
}
getchar();getchar();
system("cls");
return 0;
}
int main()
{
HANDLE hOut;
hOut = GetStdHandle( STD_OUTPUT_HANDLE );
cout << tr("-----MENU GŁÓWNE-----")<<endl;
SetConsoleTextAttribute(hOut, FOREGROUND_BLUE);
cout << tr("1.Wybierz Quiz")<<endl;
cout << tr("2.Sklep")<<endl;
cout << tr("3.Wyjdź z gry")<<endl;
wybor=getch();
switch(wybor)
{
case '1':
{
wybor_quizu();
}
case '2':
{
}
case '3':
{
}
}
getchar();getchar();
system("cls");
return 0;
}
A to plik wot.txt:
World Of tanks
zkkf56
Najcięższy czołg w grze to:
IS-7
Maus
E-100
121
b
Która wersja została wprowadzona w lutym 2016 roku?
9.9
9.13
9.17
9.14
d
W losowej bitwie (Wersja 9.14) gra:
15 czołgów vs 15 czołgów
10 czołgów vs 10 czołgów
20 czołgów vs 20 czołgów
15 czołgów vs 11 czołgów
a
Japoński czołg to:
IS-7
KV-3
STA-1
FV304
c
2 najcięższy czołg w grze to:
IS-4
T10
E-100
E-50 m
c
Niszczyciel czołgów to:
M41 Walker Bulldog
SU-5
T67
M4A3E2
c
Z góry dzięki!