Wie man Int in C++ in ASCII-Zeichen konvertiert

Jinku Hu 12 Oktober 2023
  1. Verwenden Sie die Int-zu-Zeichen-Zuweisung, um Int in ASCII-Zeichen zu konvertieren
  2. Verwenden Sie die Funktion sprintf(), um Int in ASCII-Zeichen zu konvertieren
Wie man Int in C++ in ASCII-Zeichen konvertiert

In diesem Artikel werden mehrere Methoden zur Konvertierung von int nach ASCII-Char C++ erläutert.

Verwenden Sie die Int-zu-Zeichen-Zuweisung, um Int in ASCII-Zeichen zu konvertieren

Die ASCII-Zeichenkodierung wird in einem 7-Bit-Format angegeben. Es gibt also 128 eindeutige Zeichen, die jeweils auf den entsprechenden numerischen Wert von 0 bis 127 abgebildet werden.

Da die Programmiersprache C char-Typen als Zahlen unter der Haube implementiert hat, können wir einer Variablen vom Typ char eine Variable vom Typ int zuweisen und diese als das entsprechende ASCII-Zeichen behandeln. Beispielsweise schieben wir Werte direkt vom int-Vektor zum char-Vektor und geben sie dann mit der std::copy-Methode aus, wobei ASCII-Zeichen wie erwartet angezeigt werden.

Beachten Sie, daß die Zuweisung zum Typ char nur funktioniert, wenn der int-Wert einem ASCII-Code entspricht, d.h. im Bereich 0-127 liegt.

#include <array>
#include <iostream>
#include <iterator>
#include <vector>

using std::array;
using std::copy;
using std::cout;
using std::endl;
using std::vector;

int main() {
  vector<int> numbers{97, 98, 99, 100, 101, 102, 103};
  vector<char> chars{};

  std::copy(numbers.begin(), numbers.end(),
            std::ostream_iterator<int>(cout, "; "));

  chars.reserve(numbers.size());
  for (auto &number : numbers) {
    chars.push_back(number);
  }
  cout << endl;
  std::copy(chars.begin(), chars.end(),
            std::ostream_iterator<char>(cout, "; "));

  return EXIT_SUCCESS;
}

Ausgabe:

97; 98; 99; 100; 101; 102; 103;
a; b; c; d; e; f; g;

Alternativ können wir int-Werte mit der Funktion printf direkt als ASCII-Zeichen ausgeben. Die Funktion printf übernimmt die Formatangabe für das entsprechende Typargument, wie in der folgenden Tabelle dargestellt.

Spezifizierer Beschreibung
% Druckt ein literales %-Zeichen (dieser Typ akzeptiert keine Felder für Flags, Breite, Genauigkeit, Länge).
d, i int als vorzeichenbehaftete Ganzzahl. %d und %i sind gleichbedeutend für die Ausgabe, unterscheiden sich aber, wenn sie mit scanf für die Eingabe verwendet werden (wobei die Verwendung von %i eine Zahl als hexadezimal interpretiert, wenn ihr ein 0x vorangestellt ist, und als oktal, wenn ihr eine 0 vorangestellt ist).
u Dezimal ohne Vorzeichen drucken int.
f, F doppelt in normaler (Festkomma-)Notation. f und F unterscheiden sich nur darin, wie die Zeichenketten für eine unendliche Zahl oder NaN gedruckt werden (inf, infinity und nan für f; INF, INFINITY und NAN für F).
e, E doppelter Wert in Standardform (d.ddde±dd). Eine E-Konvertierung verwendet den Buchstaben E (statt e) zur Einführung des Exponenten.
g, G double entweder in normaler oder in exponentieller Notation, je nachdem, was für seine Größe besser geeignet ist. g verwendet Kleinbuchstaben, G Großbuchstaben.
x, X ohne Vorzeichen int als Hexadezimalzahl. x verwendet Kleinbuchstaben und X Großbuchstaben.
o unsigned int in oktal.
s null-terminierte Zeichenkette.
c Zeichen (Charakter).
p void* (Zeiger auf ungültig) in einem von der Implementierung definierten Format.
a, A double in hexadezimaler Notation, beginnend mit 0x oder 0X. a verwendet Kleinbuchstaben, A verwendet Großbuchstaben.
n Nichts drucken, sondern schreibt die Anzahl der bisher erfolgreich geschriebenen Zeichen in einen Integer-Zeiger-Parameter.
#include <array>
#include <charconv>
#include <iostream>
#include <iterator>
#include <vector>

using std::array;
using std::copy;
using std::cout;
using std::endl;
using std::vector;

int main() {
  vector<int> numbers{97, 98, 99, 100, 101, 102, 103};
  vector<char> chars{};

  for (const auto &number : numbers) {
    printf("%c; ", number);
  }
  cout << endl;

  return EXIT_SUCCESS;
}

Ausgabe:

a; b; c; d; e; f; g;

Verwenden Sie die Funktion sprintf(), um Int in ASCII-Zeichen zu konvertieren

Die Funktion sprintf ist eine weitere Methode, int-Werte in Zeichen umzuwandeln. Wir müssen eine char Variable deklarieren, die den konvertierten Wert enthält. Diese Variable wird als erstes Argument an sprintf übergeben, und der dritte Parameter gibt die zu verarbeitende Zahl an. Schließlich sollten Sie einen der Format-Spezifizierer angeben, wie bei printf, er gibt den Typ an, in den der Wert umgewandelt werden soll.

#include <array>
#include <charconv>
#include <iostream>
#include <iterator>
#include <vector>

using std::array;
using std::copy;
using std::cout;
using std::endl;
using std::to_chars;
using std::vector;

int main() {
  vector<int> numbers{97, 98, 99, 100, 101, 102, 103};

  array<char, 5> char_arr{};
  for (auto &number : numbers) {
    sprintf(char_arr.data(), "%c", number);
    printf("%s; ", char_arr.data());
  }
  cout << endl;

  return EXIT_SUCCESS;
}
a; b; c; d; e; f; g;
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Verwandter Artikel - C++ Integer