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

Konwersja pojedynczego bajtu string[] do int

0 głosów
492 wizyt
pytanie zadane 7 kwietnia 2021 w C i C++ przez Mavimix Dyskutant (8,490 p.)

Mam taki kod:

int main()
{
    std::string temp;
    int intTemp[10];

    temp = "12345";

    for (int i = 0; i < temp.length(); i++)
    {
        intTemp[i] = stoi(temp[i]);
    }
}

Docelowo chcę "rozdzielić" zmienną temp na tablicę int tak, aby każda cyfra ze zmiennej temp była jako pojedynczy int w zmiennej intTemp. Powyższy program przestaje działać kiedy w argumencie stoi podam temp[i], a gdy zastąpię temp[i] na temp to do zmiennej intTemp jest zapisywana cała wartość ze string. Nie mam pomysłu jak uzyskać taki efekt, jak u góry napisałem, próbowałem już wszystkich mi znanych metod konwersji i dalej nie działa.

1 odpowiedź

+1 głos
odpowiedź 7 kwietnia 2021 przez Michał Muzyka Pasjonat (24,080 p.)
wybrane 7 kwietnia 2021 przez Mavimix
 
Najlepsza

Funkcja, a może rozwiązanie którego Pan potrzebuje to:

intTemp[i] = temp[i] - '0';

stoi przyjmuje tym char* a nie char, dlatego nie działa

komentarz 7 kwietnia 2021 przez Mavimix Dyskutant (8,490 p.)
Dzięki działa, tylko co tu się zadziało tak właściwie? To jest jakaś konwersja niejawna? Jak to działa?
komentarz 7 kwietnia 2021 przez Michał Muzyka Pasjonat (24,080 p.)
char to nic innego jak typ liczbowy, a konkretne znaki to nakładki na daną wartość liczbową, implementowane jest to tak:
48 <-> '0'
49 <-> '1'
...
57 <-> '9'
i teraz widzimy, że dystans od znaku '0' do znaku np. '1' to 1 ale liczbowo itd i na tym polega cały ten sposób
komentarz 7 kwietnia 2021 przez Mavimix Dyskutant (8,490 p.)

To rozumiem, ale interesuje mnie sama konwersja bo jakby nie patrzeć zapis 

intTemp[i] = temp[i] - '0';

to coś mniej więcej takiego (chyba): int = char-char. Kompilator sam sobie to działanie zamienia na int czy jak?

komentarz 7 kwietnia 2021 przez Michał Muzyka Pasjonat (24,080 p.)
tak, ale to nie ma znaczenia w tym przypadku bo typ int jest większy zakresowo od chara, problem byłby w odwrotnym przypadku, wtedy utracono by dane
komentarz 7 kwietnia 2021 przez Mavimix Dyskutant (8,490 p.)
edycja 7 kwietnia 2021 przez Mavimix
ok rozumiem. dzięki za pomoc

Podobne pytania

0 głosów
2 odpowiedzi 880 wizyt
pytanie zadane 1 listopada 2015 w C i C++ przez niezalogowany
0 głosów
6 odpowiedzi 7,648 wizyt
pytanie zadane 12 sierpnia 2015 w C i C++ przez gagyn Stary wyjadacz (11,050 p.)
0 głosów
1 odpowiedź 987 wizyt
pytanie zadane 1 listopada 2016 w C i C++ przez Kasztan Dyskutant (8,080 p.)

93,741 zapytań

142,676 odpowiedzi

323,294 komentarzy

63,319 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...