significa salida que librerias libreria funciones formatos entrada c++ io type-conversion iostream outputstream

c++ - salida - que es cin



¿Cómo dar salida a un personaje como un entero a través de cout? (4)

#include <iostream> using namespace std; int main() { char c1 = 0xab; signed char c2 = 0xcd; unsigned char c3 = 0xef; cout << hex; cout << c1 << endl; cout << c2 << endl; cout << c3 << endl; }

Esperaba que la salida fuera la siguiente:

ab cd ef

Sin embargo, no tengo nada.

Supongo que esto se debe a que cout siempre trata a ''char'', ''signed char'' y ''unsigned char'' como caracteres en lugar de enteros de 8 bits. Sin embargo, ''char'', ''signed char'' y ''unsigned char'' son todos tipos integrales.

Entonces mi pregunta es: ¿cómo dar salida a un personaje como un número entero a través de cout?

PD: static_cast (...) es feo y necesita más trabajo para recortar bits adicionales.


Cámbialos a un tipo entero, (¡y máscara de bits apropiadamente!), Es decir:

#include <iostream> using namespace std; int main() { char c1 = 0xab; signed char c2 = 0xcd; unsigned char c3 = 0xef; cout << hex; cout << (static_cast<int>(c1) & 0xFF) << endl; cout << (static_cast<int>(c2) & 0xFF) << endl; cout << (static_cast<unsigned int>(c3) & 0xFF) << endl; }


Otra forma de hacerlo es con std :: hex aparte de casting (int) :

std::cout << std::hex << (int)myVar << std::endl;

Espero que ayude.


Tal vez esto:

char c = 0xab; std::cout << (int)c;

Espero eso ayude.


char a = 0xab; cout << +a; // promotes a to a type printable as a number, regardless of type.

Esto funciona siempre que el tipo proporcione un operador unario con semántica ordinaria. Si está definiendo una clase que representa un número, para proporcionar un operador unario + con semántica canónica, cree un operator+() que simplemente devuelva *this bien por valor o por referencia-a-const.

fuente: Parashift.com - ¿Cómo puedo imprimir un char como un número? ¿Cómo puedo imprimir un carácter * para que el resultado muestre el valor numérico del puntero?