Ottieni il valore ASCII di Char in C++

Jinku Hu 12 ottobre 2023
  1. Usa std::copy e std::ostream_iterator per ottenere il valore ASCII di char
  2. Usa gli identificatori di formato printf per ottenere il valore ASCII di char
  3. Usa int() per ottenere il valore ASCII di char
Ottieni il valore ASCII di Char in C++

Questo articolo spiegherà diversi metodi su come ottenere il valore ASCII di char in C++.

Usa std::copy e std::ostream_iterator per ottenere il valore ASCII di char

La codifica dei caratteri ASCII è quasi onnipresente nei computer anche se da allora sono emersi schemi standard più recenti, come UTF-8 e altri. Originariamente, ASCII codificava lettere inglesi, cifre decimali, simboli di punteggiatura e alcuni codici di controllo aggiuntivi. Tutti questi simboli sono rappresentati utilizzando un valore intero dalla gamma [0 - 127]. Dato che i tipi char sono implementati come numeri interi, possiamo trattarne i valori e inviarli allo stream cout usando gli algoritmi ostream_iterator<int> e std::copy. Si noti che le lettere dell’alfabeto conseguenti hanno valori numerici adiacenti.

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

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

int main() {
  vector<char> chars{'g', 'h', 'T', 'U', 'q', '%', '+', '!', '1', '2', '3'};

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

  return EXIT_SUCCESS;
}

Produzione:

chars: 103; 104; 84; 85; 113; 37; 43; 33; 49; 50; 51;

Usa gli identificatori di formato printf per ottenere il valore ASCII di char

La funzione printf è un’altra alternativa per visualizzare i valori char con i codici ASCII corrispondenti. Nota che printf accetta entrambi gli argomenti come tipi char e differenzia solo gli specificatori di formato %c/%d. Anche se questi ultimi specificatori sono normalmente documentati come formattatori char e int, rispettivamente, sono compatibili con i tipi dell’altro.

#include <iostream>
#include <vector>

using std::cout;
using std::endl;
using std::vector;

int main() {
  vector<char> chars{'g', 'h', 'T', 'U', 'q', '%', '+', '!', '1', '2', '3'};

  cout << endl;
  for (const auto &number : chars) {
    printf("The ASCII value of '%c' is: %d\n", number, number);
  }

  return EXIT_SUCCESS;
}

Produzione:

The ASCII value of 'g' is: 103
The ASCII value of 'h' is: 104
The ASCII value of 'T' is: 84
The ASCII value of 'U' is: 85
The ASCII value of 'q' is: 113
The ASCII value of '%' is: 37
The ASCII value of '+' is: 43
The ASCII value of '!' is: 33
The ASCII value of '1' is: 49
The ASCII value of '2' is: 50
The ASCII value of '3' is: 51

Usa int() per ottenere il valore ASCII di char

Infine, si possono convertire i valori char usando la notazione int(c) e visualizzare i valori direttamente nel flusso cout come qualsiasi altra variabile. Nota che questo esempio è più in stile C++ rispetto alla versione printf con i suoi specificatori di formato. Al contrario, i valori dei caratteri ASCII possono essere stampati dai valori int utilizzando la notazione char(i).

#include <iostream>
#include <vector>

using std::cout;
using std::endl;
using std::vector;

int main() {
  vector<char> chars{'g', 'h', 'T', 'U', 'q', '%', '+', '!', '1', '2', '3'};

  cout << endl;
  for (auto &number : chars) {
    cout << "The ASCII value of '" << number << "' is: " << int(number) << endl;
  }

  return EXIT_SUCCESS;
}

Produzione:

The ASCII value of 'g' is: 103
The ASCII value of 'h' is: 104
The ASCII value of 'T' is: 84
The ASCII value of 'U' is: 85
The ASCII value of 'q' is: 113
The ASCII value of '%' is: 37
The ASCII value of '+' is: 43
The ASCII value of '!' is: 33
The ASCII value of '1' is: 49
The ASCII value of '2' is: 50
The ASCII value of '3' is: 51
Autore: 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

Articolo correlato - C++ Char