Convertir números en alfabetos en c ++

Estoy tratando de escribir un código que convierta números en alfabetos. Por ejemplo, 1 será ‘A’, 2 será ‘B’, 3 será ‘C’ y así sucesivamente. Estoy pensando en escribir 26 si las declaraciones. Me pregunto si hay una mejor manera de hacer esto …

¡Gracias!

Usa una matriz de letras.

 char nth_letter(int n) { assert(n >= 1 && n <= 26) return "abcdefghijklmnopqrstuvwxyz"[n-1]; } 

Si puede confiar en el uso de un conjunto de caracteres ASCII donde sean consecutivos, entonces puede convertir

 char intToAlphabet( int i ) { return static_cast('A' - 1 + i); } 

Si a veces puede confiar en este hecho, por ejemplo, puede establecer una marca de comstackción o similar para el objective particular, también puede usar este código para esa comstackción específica.

De lo contrario, use una tabla de búsqueda estática (como han sugerido otros).

Tenga en cuenta que es preferible “hacer valer” su verificación de rango si su entrada numerada proviene de variables de progtwig que usted sabe que nunca deben estar fuera de rango.

Si la entrada proviene de datos proporcionados por el usuario donde los usuarios podrían proporcionar datos ilegítimos, necesita una forma de manejarlo que no sea un “comportamiento indefinido”. Por lo tanto, tendría que verificar cada valor y lanzar una excepción (informar al usuario para que corrija sus datos) o usar algún carácter para indicar una entrada incorrecta.

La forma más sencilla sería usando una tabla:

 char remap( int original ) { static char const remap[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; return original >= 0 && original < sizeof(remap) - 1 ? remap[ original ] : '?'; // or throw, or ... } 

algo como eso

 my_print(int x) { char symbol = (char)('A' + x - 1); cout << symbol; } 

Si desea convertir 0 a a , 1 a b , 2 a c25 a z :

 char covertedChar = (char)('a' + 2); // Will print 'c' cout << covertedChar; 

Similarmente, para convertir 0 a A , 1 a B , 2 a C ... 25 a Z :

 char covertedChar = (char)('A' + 25); // Will print 'Z' cout << covertedChar; 

Entonces, si desea convertir 1 a A , 2 a B , 3 a C ... 26 a Z , simplemente reste 1 offset.

 int toCovert = 26 // 'Z' char covertedChar = (char)('A' + toCovert - 1); // Will print 'Z' cout << covertedChar;