Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: char-taulukosta numero int-muuttujaan

emilia [17.07.2004 22:54:27]

#

Miten saa merkkijonoon luetut numerot muutettua int-muotoon?
Nyt esimerkiksi taulukon ensimmäinen numero on neljä, joka sijoitettuna int-muuttujaan saa arvon 52 (ASCII-koodi).
Atoi() antoi jotain ihan ihme lukuja ja numeroita ei voi alussa lukea int-taulukkoon vaan ne luetaan tiedostosta
char-taulukkoon.

Antti Laaksonen [17.07.2004 23:17:57]

#

Merkkejä voi myös ajatella numeroina. ASCII-merkistössä numeromerkit ovat koodeilla 48 - 57, jolloin merkki '4' on arvoltaan 52. Numeroa vastaavan merkin voi siksi muuttaa todelliseksi numeroksi vähentämällä sen arvosta 48.

char merkki = '4';
int numero;

numero = merkki - 48;

Molemmat char ja int ovat siis kokonaislukutyyppejä, vaikka char-muuttujat tavallisesti ajatellaan merkkeinä.

Metabolix [17.07.2004 23:25:36]

#

int Luvuksi(char* Teksti)
{
  int Result = 0, Kohta;
  bool Neg = false;
  if (Teksti[0] == '-')
  {
    Neg = true;
    Kohta = 1;
  }
  else
    Kohta = 0;
  for (; Kohta < 11; Kohta++)
  {
    if (Teksti[Kohta] == 0) break;
    Result = 10 * Result + Teksti[Kohta] - 48;
  }
  if (Neg) return -Result;
  return Result;
}

Siinäpä se.
Edit: Kohta < 11 koska tekstinä pisin int-luku on -2147483648, jossa on 11 merkkiä.
Enpä olisi uskonut saavani oikein ihan vain kirjoittamalla suoraan tuohon. Pitääkin kirjoittaa ylös jonnekin muuallekin...

thefox [19.07.2004 03:06:58]

#

Kysymyksen tarkentaminen olisi paikallaan (ellei Laaksosen / Metabolix:n hommat sattuneet auttamaan, Metabolix:n koodi tekee melkolailla saman mitä atoi:kin).

Deffi [25.07.2004 22:00:17]

#

atoi ja itoa!

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta