• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zmiana ze STRING na INT.

Object Storage Arubacloud
0 głosów
948 wizyt
pytanie zadane 12 kwietnia 2016 w C i C++ przez zkkf56 Dyskutant (8,710 p.)

Witam,

Jak zrobić aby w fstream zmienna o typie string zmieniła się na int? to mój kod:


#include <iostream>
#include <cstdlib>
#include <time.h>
#include <windows.h>
#include <fstream>
#include <string>



using namespace std;


int liczba, strzal, proby=0, opcja, puchary=0, wyzwanie, Puchary_z_Pliku=0, napis , wybor;
string imie, tekst;



int main()
{
    while(puchary>=5000000000 && Puchary_z_Pliku>=5000000000)
    {


    HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, 0x0009 );
    cout << "Witaj! W grze! Wybierz co chcesz zrobic:" << endl;
    cout << "Wersja gry: 1.2" << endl;
    cout << "1.Graj! "<<endl;
    cout << "2.Wyzwanie! "<<endl;
    cout << "3.Sprawdz swoja liczbe pucharow! "<<endl;

    ifstream mojplik("wynik.txt");
        if(mojplik.is_open())
        {
            while(mojplik.good())
            {
                getline(mojplik, tekst);

                cout << "Twoja liczba pucharow: "<< tekst + Puchary_z_Pliku << endl;
            }
            mojplik.close();
    //napis = napis + puchary;
    cin >>opcja;


    if(opcja == 3)
    {


        ifstream mojplik("wynik.txt");
        if(mojplik.is_open())
        {
            while(mojplik.good())
            {
                getline(mojplik, tekst);
                cout<<endl;
                cout<<endl;
                cout <<"Twoja liczba pucharow: "<< tekst + Puchary_z_Pliku << endl;
                cout<<endl;
                cout<<endl;
            }
            mojplik.close();



        }
    }





        if(opcja == 1)
        {


             srand(time(NULL));
             liczba = rand()%(100+1);
            while(strzal!=liczba)
            {

            proby++;

            HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, 0x0007 );
            cout << "Zgadnij jaka to.(to Twoja "<<proby<<" proba.):";
            cin >> strzal;

            if(strzal==liczba)
            {
                HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, 0x0003 );
                cout << "Brawo! Zgadles w: "<<proby<<" probie"<<endl;
                cout << "Wygrywasz: 25 pucharow!";
                puchary = puchary + 25;
                //napis = napis + puchary;
                cout << "Twoja liczba pucharow: "<<Puchary_z_Pliku +  puchary <<endl;
                ofstream mojplik;
                mojplik.open("wynik.txt");
                mojplik << "\"" << Puchary_z_Pliku + puchary<< "\"";
                mojplik.close();
            }

            if(strzal<liczba)
            {
                HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, FOREGROUND_RED );
                cout << "Niestety podales za mala liczbe :("<<endl;
            }

            if(strzal>liczba)
            {
                HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, FOREGROUND_GREEN );
                cout << "Niestety podales za duza liczbe :("<<endl;
            }

            if(strzal>100)
            {
                HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, FOREGROUND_BLUE );
                cout << "Podales wieksza liczbe niz jest w zakrasie! :("<<endl;
            }


            }
            }

            if(opcja==2)
            {
                HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, FOREGROUND_BLUE );
                cout << "Wybierz nr i poziom trudnosci wyzwania:"<<endl;
                cout << "1.Latwy,zgadnij liczbe w mniej niz 25 rund"<<endl;
                cout << "2.Sredni,zgadnij liczbe w mniej niz 15 rund"<<endl;
                cout << "3.Trudny,zgadnij liczbe w mniej niz 10 rund"<<endl;
                cin >>wyzwanie;


            if(wyzwanie==1)
            {


             srand(time(NULL));
             liczba = rand()%(100+1);
            while(strzal!=liczba && proby<24)
            {
                proby++;

                HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, 0x0007 );
            cout << "Zgadnij jaka to liczba.(to Twoja "<<proby<<" proba.):";
            cin >> strzal;

            if(strzal==liczba)
            {
                HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, 0x0003 );
                cout << "Brawo! Zgadles w: "<<proby<<" probie"<<endl;
                cout << "Wygrywasz: 30 pucharow!";
                puchary = puchary + 30;
                //napis = napis + 30;
                cout << "Twoja liczba pucharow: "<<Puchary_z_Pliku +  puchary <<endl;

                ofstream mojplik;
                mojplik.open("wynik.txt");
                mojplik << "\"" << Puchary_z_Pliku + puchary<< "\"";
                mojplik.close();
            }

            if(strzal<liczba)
            {
                HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, FOREGROUND_RED );
                cout << "Niestety podales za mala liczbe :("<<endl;
            }

            if(strzal>liczba)
            {
                HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, FOREGROUND_GREEN );
                cout << "Niestety podales za duza liczbe :("<<endl;
            }

            if(strzal>100)
            {
                HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, FOREGROUND_BLUE );
                cout << "Podales wieksza liczbe niz jest w zakrasie! :("<<endl;
            }

            if(proby>23)
            {
                cout<<endl;
                cout<<endl;
                cout<<  "Przegrales! W: "<<proby<<" probie. Twoja liczba to:"<<liczba<<endl;
                cout<<endl;
                cout<<endl;
            }



            }
            }





            if(wyzwanie==2)
            {


             srand(time(NULL));
             liczba = rand()%(100+1);
            while(strzal!=liczba && proby<14)
            {
                proby++;

                HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, 0x0007 );
            cout << "Zgadnij jaka to liczba.(to Twoja "<<proby<<" proba.):";
            cin >> strzal;

            if(strzal==liczba)
            {
                HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, 0x0003 );
                cout << "Brawo! Zgadles w: "<<proby<<" probie"<<endl;
                cout << "Wygrywasz: 50 pucharow!";
                puchary = puchary + 50;
                napis = napis + 50;
                cout << "Twoja liczba pucharow: "<< Puchary_z_Pliku + puchary <<endl;

                ofstream mojplik;
                mojplik.open("wynik.txt");
                mojplik << "\"" << Puchary_z_Pliku + puchary<< "\"";
                mojplik.close();
            }

            if(strzal<liczba)
            {
                HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, FOREGROUND_RED );
                cout << "Niestety podales za mala liczbe :("<<endl;
            }

            if(strzal>liczba)
            {
                HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, FOREGROUND_GREEN );
                cout << "Niestety podales za duza liczbe :("<<endl;
            }

            if(strzal>100)
            {
                HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, FOREGROUND_BLUE );
                cout << "Podales wieksza liczbe niz jest w zakrasie! :("<<endl;
            }

            if(proby>13)
            {
                cout<<endl;
                cout<<endl;
                cout<<  "Przegrales! W: "<<proby<<" probie. Twoja liczba to:"<<liczba<<endl;
                cout<<endl;
                cout<<endl;
            }



            }
            }

            if(wyzwanie==3)
            {


             srand(time(NULL));
             liczba = rand()%(100+1);
            while(strzal!=liczba && proby<9)
            {
                proby++;

                HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, 0x0007 );
            cout << "Zgadnij jaka to liczba.(to Twoja "<<proby<<" proba.):";
            cin >> strzal;

            if(strzal==liczba)
            {
                HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, 0x0003 );
                cout << "Brawo! Zgadles w: "<<proby<<" probie"<<endl;
                cout << "Wygrywasz: 60 pucharow!";
                puchary = puchary + 60;
                napis = napis + 60;
                cout << "Twoja liczba pucharow: "<< Puchary_z_Pliku + puchary <<endl;

                ofstream mojplik;
                mojplik.open("wynik.txt");
                mojplik << "\"" << Puchary_z_Pliku + puchary<< "\"";
                mojplik.close();
            }

            if(strzal<liczba)
            {
                HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, FOREGROUND_RED );
                cout << "Niestety podales za mala liczbe :("<<endl;
            }

            if(strzal>liczba)
            {
                HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, FOREGROUND_GREEN );
                cout << "Niestety podales za duza liczbe :("<<endl;
            }

            if(strzal>100)
            {
                HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, FOREGROUND_BLUE );
                cout << "Podales wieksza liczbe niz jest w zakrasie! :("<<endl;
            }

            if(proby>8)
            {
                cout<<endl;
                cout<<endl;
                cout<<  "Przegrales! W: "<<proby<<" probie. Twoja liczba to:"<<liczba<<endl;
                cout<<endl;
                cout<<endl;
            }



            }
            }


            }






        }
    return 0;
}
}



1 odpowiedź

0 głosów
odpowiedź 12 kwietnia 2016 przez pietrzakacper Mądrala (7,480 p.)

Operator strumienia w klasie fstream może zostać przeciążony na int. czyli spokojnie można zapisać:

int variable;

fstream file;

//otwarcie pliku

file >> variable;

Polecam się zapoznać: http://cpp0x.pl/kursy/Kurs-C++/Obsluga-plikow/305

komentarz 12 kwietnia 2016 przez zkkf56 Dyskutant (8,710 p.)
Wyskakuje mi błąd:  no matching function for call to 'getline(std::ifstream&, int&)
komentarz 12 kwietnia 2016 przez pietrzakacper Mądrala (7,480 p.)
A pokaż fragment kodu który nie działa
komentarz 13 kwietnia 2016 przez zkkf56 Dyskutant (8,710 p.)
fstream mojplik("wynik.txt");
        if(mojplik.is_open())
        {
            while(mojplik.good())
            {
                getline(mojplik, tekst);

                cout << "Twoja liczba pucharow: "<< tekst + Puchary_z_Pliku << endl;
            }
            mojplik.close();

 

komentarz 13 kwietnia 2016 przez pietrzakacper Mądrala (7,480 p.)

Z błędu rozumiem, że zmienna tekst jest typu int, a getline obsługuje tylko łańcuchy znaków dlatego wywala błąd.

http://www.cplusplus.com/reference/string/string/getline/

Aby wczytać bezpośrednio do int-a już napisałem co masz zrobić

komentarz 13 kwietnia 2016 przez zkkf56 Dyskutant (8,710 p.)

Co mam wpisać w 

//otwarcie pliku

pliku ?

komentarz 13 kwietnia 2016 przez pietrzakacper Mądrala (7,480 p.)
Nie po to daję ci link do świetnej strony gdzie wszystko jest opisane żebyś potem pytał się jak otworzyć plik. Daj coś od siebie.
komentarz 15 kwietnia 2016 przez zkkf56 Dyskutant (8,710 p.)
Dokładnie chodzi mi oto: Co mam wpisać zamiast getline jeżeli mam zmienną typu int????

Podobne pytania

0 głosów
1 odpowiedź 453 wizyt
pytanie zadane 28 maja 2016 w C i C++ przez programer Obywatel (1,190 p.)
0 głosów
2 odpowiedzi 597 wizyt
pytanie zadane 25 marca 2016 w C i C++ przez veryhotshark Obywatel (1,620 p.)
0 głosów
1 odpowiedź 402 wizyt
pytanie zadane 12 marca 2016 w C i C++ przez luparuwka Początkujący (400 p.)

92,576 zapytań

141,426 odpowiedzi

319,650 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...