Witam. Zacząłem dopiero programować i jeszcze wiele muszę się nauczyć. Ostatnio jednak jak pisałem program mający za zadanie wylosować mi kod i zapisać go w pliku, wystąpił mi problem z kompilacją. Nigdzie nie udało mi się znaleźć rozwiązania tego problemu. Reinstalacja kompilatora również nic nie dała.
kod:
#include <iostream>
#include <string>
#include <limits>
#include <cstdlib>
#include <ctime>
#include <fstream>
#include <stdio.h>
std::string kodowanie()
{
std::string kod;
for (int i=0; i<2; i++)
{
int * b=new int;
*b=rand()%10;
std::string B= std::to_string(*b);
kod.insert (0,B);
delete b;
b = nullptr;
}
for (int i=0;i<2;i++)
{
int * a= new int;
*a=rand() %24;
switch (*a)
{
case 0:
kod.insert (0, "A");
break;
case 1:
kod.insert (0, "B");
break;
case 2:
kod.insert (0, "C");
break;
case 3:
kod.insert (0, "D");
break;
case 4:
kod.insert (0, "E");
break;
case 5:
kod.insert (0, "F");
break;
case 6:
kod.insert (0, "G");
break;
case 7:
kod.insert (0, "H");
break;
case 8:
kod.insert (0, "I");
break;
case 9:
kod.insert (0, "J");
break;
case 10:
kod.insert (0, "K");
break;
case 11:
kod.insert (0, "L");
break;
case 12:
kod.insert (0, "M");
break;
case 13:
kod.insert (0, "N");
break;
case 14:
kod.insert (0, "O");
break;
case 15:
kod.insert (0, "P");
break;
case 16:
kod.insert (0, "R");
break;
case 17:
kod.insert (0, "S");
break;
case 18:
kod.insert (0, "T");
break;
case 19:
kod.insert (0, "U");
break;
case 20:
kod.insert (0, "W");
break;
case 21:
kod.insert (0, "X");
break;
case 22:
kod.insert (0, "Y");
break;
case 23:
kod.insert (0, "Z");
break;
}
delete a;
a = nullptr;
}
return kod;
}
bool sprawdzanie( std::string kod)
{
std::ifstream Tablica;
Tablica.open("Tablica.txt",std::ios::in);
if(Tablica.good()==false){
std::cout<<"Cos poszlo nie tak przy otwieraniu pliku"<<std::endl;
exit(0);}
std::string tekst;
while(getline(Tablica,tekst))
{
if(kod==tekst)
{
Tablica.close();
return true;
}
}
Tablica.close();
return false;
}
int main()
{
srand(time(NULL));
std::string kod,tekst;
kod=kodowanie();
std::cout<<kod<<std::endl;
while(true)
{
if(sprawdzanie(kod)==true)
{
std::cout<<"Oh no!"<<std::endl;
kod=kodowanie();
continue;
}
if(sprawdzanie(kod)==false)
{
std::cout<<"Oh Yay!"<<std::endl;
break;
}
}
std::ifstream Tablica;
Tablica.open("Tablica.txt",std::ios::out | std::ios::app);
if(Tablica.good()==false)
{
std::cout<<"Wystapil problem z otworzeniem pliku"<<std::endl;
}
Tablica<<kod; //<<Tu występuje błąd. Nie wiem czemu kompilator nie rozpoznaje operatora "<<"
Tablica.close();
getchar();getchar();
return 0;
}
Treść błędu: error: no match for 'operator<<' (operand types are 'std::ifstream' {aka 'std::basic_ifstream<char>'} and 'std::__cxx11::string' {aka 'std::__cxx11::basic_string<char>'})|
Wie ktoś może jak to rozwiązać?