Heim >Backend-Entwicklung >C++ >Wie kann ich in C/C einzelne Ziffern einer Zeichenfolge effizient in Ganzzahlen umwandeln?

Wie kann ich in C/C einzelne Ziffern einer Zeichenfolge effizient in Ganzzahlen umwandeln?

Susan Sarandon
Susan SarandonOriginal
2024-12-17 04:30:25945Durchsuche

How Can I Efficiently Convert Single Digits from a String to Integers in C/C  ?

Einzelzeichen in Ganzzahlen umwandeln

Beim Programmieren kommt es häufig vor, dass eine Ziffernfolge in einzelne Ganzzahlen umgewandelt werden muss. Während der Zugriff auf jedes Zeichen über den Index unkompliziert ist, kann die Konvertierung dieser Zeichen in Ganzzahlen eine Herausforderung darstellen.

Die beliebte Funktion atoi() erfordert ein String-Argument, was zu der Idee führte, jedes Zeichen in einen String umzuwandeln und dann atoi zu verwenden (). Es gibt jedoch einen direkteren und effizienteren Ansatz.

Der Schlüssel liegt darin, zu erkennen, dass die Zeichenkodierungen für Ziffern sequentiell sind. In ASCII, UTF-x und den meisten anderen Kodierungssystemen hat „0“ eine Kodierung von 48, während „9“ eine Kodierung von 57 hat.

Auf diese Weise können Sie den ganzzahligen Wert einer Ziffer extrahieren indem Sie das Zeichen von „0“ oder 48 subtrahieren. Zum Beispiel:

char c = '1';
int i = c - '0'; // i is now equal to 1, not '1'

Dies ist äquivalent zu:

char c = '1';
int i = c - 48; // i is now equal to 1, not '1'

Während beide Ausdrücke das gleiche Ergebnis liefern, wird die erste Option (c - '0') im Allgemeinen als besser lesbar angesehen.

Das obige ist der detaillierte Inhalt vonWie kann ich in C/C einzelne Ziffern einer Zeichenfolge effizient in Ganzzahlen umwandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn