Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

String to Int oraz suma wszystkich liczb w Int

Ostatnio zmodyfikowano 2014-11-01 17:13
Autor Wiadomość
Unlimited
Temat założony przez niniejszego użytkownika
String to Int oraz suma wszystkich liczb w Int
» 2014-10-28 23:19:56
Witam. Jak przerzucić string na int? Używając atol() mam błąd
|33|error: invalid conversion from 'char' to 'const char*' [-fpermissive]|
oraz drugi problem jak mając np liczbę intową 123 obliczyć sumę wszystkich liczb (wynik 6)? Rzutować na string i potem każdy znak string dodawać do int? Tylko tutaj znów konwersja :/
P-119606
Monika90
» 2014-10-29 12:12:29
P-119613
Unlimited
Temat założony przez niniejszego użytkownika
» 2014-10-29 22:32:23
Niestety na to też się natknąłem i zarówno stoi() jak i to_string() jest niezadeklarowane więc podejrzewam że MinGW nie obsługuje tych funkcji. Może coś innego?
P-119661
stryku
» 2014-10-29 23:25:08
Jest miliard przykładów w necie.

"Jak przerzucić string na int?"
http://4programmers.net/C​/Konwersje_int_na_string_i_string_na_int //nie wiem czy można podawać linki do innych(konkurencyjnych) for

"Używając atol() mam błąd"
http://en.cppreference.com/w​/cpp/language/const_cast

"Rzutować na string i potem każdy znak string dodawać do int?"
tak

"Tylko tutaj znów konwersja"
znów pierwszy link
P-119663
Atexor
» 2014-11-01 17:13:20
Ja korzystam z takiej funkcji:

przykład:
C/C++
cin >> liczba_string
istringstream iss( liczba_string );
iss >> liczba_int
Tylko musisz załączyć bibliotekę <sstream>


Zaś konwersję można zrobić tak, tj. po numerach ASCII:

C/C++
#include <cstdlib>
#include <iostream>
#include <sstream> //do dzialania kownersji string do int

using namespace std;

int main()
{
    string liczba_str = "13k5t90"; //przykladowa wartosc, 1+3+5+9+0=18, inne znaki pomija
    string znak_str; //zmienna pomocnicza do konwersji pojedynczego znaku
    int suma = 0, liczba_int = 0;
    int i = 0, x;
   
    while( i < liczba_str.length() ) //robi dopoki jest co wczytywac
    {
        x = liczba_str.at( i );
        znak_str = liczba_str.at( i );
        cout << "Numer ASCII wynosi" << x << endl;
        if( x >= 48 && x <= 57 ) //jest to zakres [48,57] czyli cyfry 0,1,2,...9. Inne znaki pomija
        {
            istringstream iss( znak_str ); //konwersja
            iss >> liczba_int;
            suma += liczba_int;
        }
        i++; //aby czytalo kolejny znak ze stringa
    }
    cout << "Suma cyfr to " << suma << endl;
   
    system( "PAUSE" );
    return( 0 );
}

Pozdrawiam :)
P-119814
« 1 »
  Strona 1 z 1