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

C++ String do Float

Object Storage Arubacloud
0 głosów
2,064 wizyt
pytanie zadane 26 lipca 2017 w C i C++ przez mo290103 Obywatel (1,860 p.)
Wczytuje liczby zmiennoprzecinkowe z pliku tylko pobieram je jako stringi, a potrzebuje float

1 odpowiedź

+1 głos
odpowiedź 26 lipca 2017 przez Bondrusiek Maniak (61,370 p.)
wybrane 26 lipca 2017 przez mo290103
 
Najlepsza

Witam,

możesz wykorzystać funkcje std::stof

float stof (const string&  str, size_t* idx = 0);
float stof (const wstring& str, size_t* idx = 0);

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

komentarz 26 lipca 2017 przez mo290103 Obywatel (1,860 p.)
Kompilator nie rozpoznaje stof
komentarz 26 lipca 2017 przez Evelek Nałogowiec (28,960 p.)
Bo nie kompilujesz zgodnie ze standardem C++11.
komentarz 26 lipca 2017 przez mo290103 Obywatel (1,860 p.)
Pojawia mi się błąd: array must be initialized with a brace-enclosed initalizer
komentarz 26 lipca 2017 przez Bondrusiek Maniak (61,370 p.)
Wklej kod bo sam z samego komunikatu ciężko coś wywnioskować. Udało Ci się skompilować program z przykładu ?
komentarz 26 lipca 2017 przez mo290103 Obywatel (1,860 p.)
string::size_type sz;
float liczba[0]=stof(linia[0],&sz);

 

komentarz 26 lipca 2017 przez mo290103 Obywatel (1,860 p.)
kod z przykładu działa
komentarz 26 lipca 2017 przez Bondrusiek Maniak (61,370 p.)

Zobacz co zwraca zmienna linia[0], string czy coś innego bo wtedy może zwrócić błąd.

#include <iostream>   // std::cout
#include <string>     // std::string, std::stof

using namespace std;

int main ()
{
  std::string linia ("686.97");
  std::string::size_type sz;     // alias of size_t

  float liczba = stof(linia, &sz);
  cout << liczba;

  return 0;
}

 

komentarz 26 lipca 2017 przez mo290103 Obywatel (1,860 p.)
#include <iostream>
#include <fstream>
#include <string>
#include <cmath>
#include <conio.h>
#include <stdlib.h>
#include <cstdlib>

using namespace std;

int opcja;
string jezyk;
string tekst;
float ile_a,ile_c,ile_e,ile_t,ile_y;

int main()
{
    cout<<"1.Sprawdz jaki jezyk (1)"<<endl<<"2.Naucz mnie (2)"<<endl;
    cin>>opcja;
    if(opcja==1){

    }
    else if(opcja==2){
        cout<<"Najpierw powiedz mi jakiego jezyka chcesz mnie nauczyc: ";
        cin>>jezyk;
        if(jezyk=="polski"){
            cout<<"Teraz napisz cos po polsku :"<<endl;
            cin.sync();
            getline(cin,tekst);
            for(int i=0;i<tekst.length();i++)
            {
                if(tekst[i]=='a')ile_a++;
            }
            for(int i=0;i<tekst.length();i++)
            {
                if(tekst[i]=='c')ile_c++;
            }
            for(int i=0;i<tekst.length();i++)
            {
                if(tekst[i]=='e')ile_e++;
            }
            for(int i=0;i<tekst.length();i++)
            {
                if(tekst[i]=='t')ile_t++;
            }
            for(int i=0;i<tekst.length();i++)
            {
                if(tekst[i]=='y')ile_y++;
            }
            float sr_a=ile_a/tekst.length();
            float sr_c=ile_c/tekst.length();
            float sr_e=ile_e/tekst.length();
            float sr_t=ile_t/tekst.length();
            float sr_y=ile_y/tekst.length();
            cout<<sr_a<<endl;
            cout<<sr_c<<endl;
            cout<<sr_e<<endl;
            cout<<sr_t<<endl;
            cout<<sr_y<<endl;

            //PLIK
            fstream plik;
            string linia[5];
            int j=0;
            plik.open("polski.txt", ios::in);
            while(!plik.eof()){
                getline(plik,linia[j]);
                j++;
            }
            plik.close();
            cout<<linia[0];
            cout<<linia[1];
            cout<<linia[2];
            cout<<linia[3];
            cout<<linia[4];
            string::size_type sz;
            float liczba[0]=stof(linia[0],&sz);  //zmiana string na float nie dziła
            cout<<liczba[0];
        }
        else if(jezyk=="angielski"){

        }
        else if(jezyk=="francuski"){

        }
        else{
            cout<<endl<<"Nie moge nauczyc sie takiego jezyka :("<<endl;
        }
    }
    else{
        cout<<endl<<"Nie ma takiej opcji :("<<endl;
    }
    return 0;
}

 

komentarz 26 lipca 2017 przez mo290103 Obywatel (1,860 p.)

Teraz działa poprawiłem:

#include <iostream>
#include <fstream>
#include <string>
#include <cmath>
#include <conio.h>
#include <stdlib.h>
#include <cstdlib>

using namespace std;

int opcja;
string jezyk;
string tekst;
float ile_a,ile_c,ile_e,ile_t,ile_y;

int main()
{
    cout<<"1.Sprawdz jaki jezyk (1)"<<endl<<"2.Naucz mnie (2)"<<endl;
    cin>>opcja;
    if(opcja==1){

    }
    else if(opcja==2){
        cout<<"Najpierw powiedz mi jakiego jezyka chcesz mnie nauczyc: ";
        cin>>jezyk;
        if(jezyk=="polski"){
            cout<<"Teraz napisz cos po polsku :"<<endl;
            cin.sync();
            getline(cin,tekst);
            for(int i=0;i<tekst.length();i++)
            {
                if(tekst[i]=='a')ile_a++;
            }
            for(int i=0;i<tekst.length();i++)
            {
                if(tekst[i]=='c')ile_c++;
            }
            for(int i=0;i<tekst.length();i++)
            {
                if(tekst[i]=='e')ile_e++;
            }
            for(int i=0;i<tekst.length();i++)
            {
                if(tekst[i]=='t')ile_t++;
            }
            for(int i=0;i<tekst.length();i++)
            {
                if(tekst[i]=='y')ile_y++;
            }
            float sr_a=ile_a/tekst.length();
            float sr_c=ile_c/tekst.length();
            float sr_e=ile_e/tekst.length();
            float sr_t=ile_t/tekst.length();
            float sr_y=ile_y/tekst.length();

            //PLIK
            fstream plik;
            float linia_a,linia_c,linia_e,linia_t,linia_y;
            string linia;
            int j=0;
            plik.open("polski.txt", ios::in);
            while(!plik.eof()){
                getline(plik,linia);
                if(j==0)linia_a=stof(linia,0);
                if(j==1)linia_c=stof(linia,0);
                if(j==2)linia_e=stof(linia,0);
                if(j==3)linia_t=stof(linia,0);
                if(j==4)linia_y=stof(linia,0);
                j++;
            }
            plik.close();

            cout<<linia_a<<endl;
            cout<<linia_c<<endl;
            cout<<linia_e<<endl;
            cout<<linia_t<<endl;
            cout<<linia_y<<endl;
        }
        else if(jezyk=="angielski"){

        }
        else if(jezyk=="francuski"){

        }
        else{
            cout<<endl<<"Nie moge nauczyc sie takiego jezyka :("<<endl;
        }
    }
    else{
        cout<<endl<<"Nie ma takiej opcji :("<<endl;
    }
    return 0;
}

 

Podobne pytania

+1 głos
1 odpowiedź 134 wizyt
pytanie zadane 26 sierpnia 2021 w C# przez Mixteraks Początkujący (360 p.)
0 głosów
2 odpowiedzi 1,057 wizyt
pytanie zadane 29 maja 2016 w C i C++ przez Fox25 Nowicjusz (200 p.)
+1 głos
1 odpowiedź 108 wizyt

92,576 zapytań

141,426 odpowiedzi

319,652 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!

...