Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » zahl aus string

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
31.08.2004, 13:43 Uhr
virtual
Sexiest Bit alive
(Operator)



Zitat von (un)wissender:
@Pablo
Gut!

@virtual
Zu 48 und '0': eigentlich haste Recht, '0' ist deutlich besser, allerdings wird sich die ASCII-Zuordnung vermutlich nicht ändern, also ist es nur schlechter Stil.

Gut, bei ASCII wird sich das nicht ändern, aber es gibt nun mal auch Rechner, die nicht ASCII verwenden (AS7400), da ist das dann eher unportabel. Der Standard garantiert lediglich einen Zeichensatz, in dem gilt '0'<'1'<'2'<...<'9'.
Hinsichtlich Wartung+Verständnis ist es sowieso ziemlicher Müll.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
31.08.2004, 14:28 Uhr
0xdeadbeef
Gott
(Operator)


Das wär meine Idee dazu:

C++:
int weird_thingy(char const *s) {
  while(*s && !isdigit(*s) && (*s != '-' && *s != '+' || !isdigit(s[1])))
    ++s;

  return atoi(s); /* atoi("") == 0 */
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 31.08.2004 um 14:28 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
31.08.2004, 14:38 Uhr
0xdeadbeef
Gott
(Operator)


Performanter, aber ungleich hässlicher wäre:

C++:
int weird_thingy(char const *s) {
  for(;;)
    switch(*s) {
    case '+':
    case '-':
      if(!isdigit(s[1])) {
        s += 2;
        break;
      }
    case '9':
    case '8':
    case '7':
    case '6':
    case '5':
    case '4':
    case '3':
    case '2':
    case '1':
    case '0':
      return atoi(s);
    case 0:
      return 0;
    default:
      ++s;
    }
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 31.08.2004 um 14:38 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: