Especificadores de formato en C++
Al depurar el código nativo en la ventana Inspección o en el cuadro de diálogo Inspección rápida, se cambia el formato en el que se muestra un valor mediante especificadores de formato.
(La mayoría de los especificadores de formato son solo para código nativo, sin embargo Visual C# posee un conjunto limitado de especificadores de formato. Vea Especificadores de formato en C#).
También puede utilizar especificadores de formato en las ventanas Inmediato y Comandos, así como en ventanas de código fuente. Si hace una pausa sobre una expresión de esas ventanas, el resultado aparecerá en un cuadro desplegable de información sobre datos. Estos cuadros mostrarán el especificador de formato en la pantalla de información sobre datos.
Nota
El depurador nativo de Visual Studio realizó la transacción a un motor de depuración nuevo.Este cambio incluyó la adición de algunos nuevos especificadores de formato y la eliminación de algunos antiguos.La transición no se completa, y se sigue usando el depurador antiguo cuando realiza la depuración de interoperabilidad (administrada y nativa mixta) con C++/CLI y cuando depura mediante Editar y continuar de C++.Las secciones de este tema muestran los especificadores de formato de cada motor de depuración.
-
Los especificadores de formato de Visual Studio 2012 describen los especificadores de formato en el nuevo motor de depuración.
-
Los especificadores de formato de la depuración de interoperabilidad con Editar y continuar de C++ describen los especificadores de formato del motor de depuración antiguo.
Contenido
Ejemplo
Especificadores de formato de Visual Studio 2012
- Especificadores de tamaño para punteros como matrices en Visual Studio 2012
Especificadores de formato para la depuración de interoperabilidad con Editar y continuar de C++
Ubicaciones de memoria de los especificadores de formato en la depuración de interoperabilidad con Editar y continuar de C++
Especificador de tamaño para punteros como matrices en la depuración de interoperabilidad con Editar y continuar de C++
Ejemplo
Suponga que nVar es una variable de tipo entero y que la ventana Inspección muestra que esa variable contiene el valor 0x0065. Para ver el valor expresado como carácter, en vez de como entero, en la columna Nombre, agregue el especificador de formato de carácter c a continuación del nombre de la variable:
En lugar del valor entero 0x0065, la columna Valor muestra ahora el valor de carácter, 101 'e'.
Si desea aplicar un especificador de formato a los elementos de una matriz o a los miembros de un objeto, debe aplicarlo directamente a cada elemento o miembro. No se puede aplicar a la matriz o al objeto en su totalidad. Por ejemplo, suponga que tiene una matriz nArray y desea ver los cuatro primeros elementos en formato de carácter. Entonces, debe escribir estas expresiones en la ventana Inspección:
nArray[0],c
nArray[1],c
nArray[2],c
nArray[3],c
Especificadores de formato de Visual Studio 2012
Las tablas siguientes muestran los especificadores de formato que puede utilizar en Visual Studio 2012 cuando no esté depurando código de interoperabilidad (nativo o administrado) con C++/CLI o mediante la opción de Editar y continuar de C++.
Los especificadores en negrita no se admiten para la depuración de interoperabilidad con C++/CLI o con Editar y continuar de C++.
Especificador |
Formato |
Expresión |
Valor mostrado |
---|---|---|---|
d |
Entero decimal |
0xF000F065, d |
-268373915 |
o |
Entero octal sin signo |
0xF065, o |
0170145 |
x h |
Entero hexadecimal |
61546, x 61541, h |
0x0000f06a |
X H |
Entero hexadecimal |
61541, X 61546, H |
0x0000F06A |
c |
Un único carácter |
0x0065, c |
101 'e' |
s |
cadena ASCII |
0x0012fde8, s |
"Hola a todos" |
sb |
cadena ASCII |
0x0012fde8, sb |
Hola a todos |
su |
Cadena de Unicode |
0x0012fde8, su |
L"Hola a todos" |
sub |
Cadena de Unicode |
0x0012fde8, sub |
Hola a todos |
s8 |
Cadena UTF-8 |
0x0012fde8, s8 |
"Hola a todos" |
s8b |
Cadena UTF-8 |
0x0012fde8, s8b |
Hola a todos |
bstr |
Cadena BSTR |
0x0032fe8, bstr |
Hola |
, na |
&myGlobal, n winmain, na |
No se muestra la dirección del puntero. |
|
nd |
pb,nd |
Muestra solo la información de la clase base de pb, omitiendo las clases derivadas. |
|
hr |
HRESULT o código de error Win32. (Ahora, el depurador descodifica los valores HRESULT automáticamente, de modo que este especificador no es necesario en esos casos). |
0x00000000L, hr |
S_OK |
wc |
Marcador de clase de ventana. |
0x00000040, wc |
WC_DEFAULTCHAR |
wm |
Números de mensajes de Windows |
0x0010, wm |
WM_CLOSE |
! |
Sin formato, omite cualquier personalización de vistas de tipos de datos |
i ! |
4 |
Especificadores de tamaño para punteros como matrices en Visual Studio 2012
Si tiene un puntero a un objeto que desea ver como una matriz, puede utilizar un entero o una expresión para especificar el número de elementos de matriz:
Especificador |
Formato |
Expresión |
Valor mostrado |
---|---|---|---|
n |
Entero decimal o hexadecimal |
pBuffer,[32] pBuffer,[0x20] |
Muestra pBuffer como una matriz de 32 elementos. |
[exp] |
Expresión de C++ válida que se evalúa como un entero. |
pBuffer,[bufferSize] |
Evalúa bufferSize y muestra pBuffer como una matriz del número evaluado de elementos. |
expand(n) |
pBuffer, expand(1,2) |
Muestra el tercer elemento secundario del segundo elemento secundario de pBuffer. |
Especificadores de formato para la depuración de interoperabilidad con C++/CLI o Editar y continuar de C++
Los especificadores en negrita solo se admiten para la depuración de código nativo y de C++/CLI y la depuración con Editar y continuar de C++.
Especificador |
Formato |
Expresión |
Valor mostrado |
---|---|---|---|
d,i |
Entero decimal con signo |
0xF000F065, d |
-268373915 |
u |
Entero decimal sin signo |
0x0065, u |
101 |
o |
Entero octal sin signo |
0xF065, o |
0170145 |
x,X |
Entero hexadecimal |
61541, x |
0x0000f065 |
l,h |
Prefijo long o short para: d, i, u, o, x, X |
00406042,hx |
0x0c22 |
f |
Punto flotante con signo |
(3./2.), f |
1.500000 |
e |
Notación científica con signo |
(3./2.), e |
1.500000e+000 |
g |
Punto flotante con signo o notación científica con signo, lo que sea más corto |
(3./2.), g |
1.5 |
c |
Un único carácter |
0x0065, c |
101 'e' |
s |
String |
0x0012fde8, s |
"Hola a todos" |
su |
Cadena de Unicode |
0x0012fde8, su |
L"Hola a todos" |
sub |
Cadena de Unicode |
0x0012fde8, sub |
Hola a todos |
s8 |
Cadena UTF-8 |
0x0012fde8, s8 |
"Hola a todos" |
hr |
HRESULT o código de error Win32. (Ahora, el depurador descodifica los valores HRESULT automáticamente, de modo que este especificador no es necesario en esos casos). |
0x00000000L, hr |
S_OK |
wc |
Marcador de clase de ventana. |
0x00000040, wc |
WC_DEFAULTCHAR |
wm |
Números de mensajes de Windows |
0x0010, wm |
WM_CLOSE |
! |
Sin formato, omite cualquier personalización de vistas de tipos de datos |
i ! |
4 |
Ubicaciones de memoria de los especificadores de formato en la depuración de interoperabilidad con C++/CLI o Editar y continuar de C++
La siguiente tabla contiene símbolos de formato que se utilizan para ubicaciones de memoria. Puede utilizar un especificador de ubicación de memoria con cualquier valor o expresión que se evalúe como una ubicación.
Símbolo |
Formato |
Expresión |
Valor mostrado |
---|---|---|---|
ma |
64 caracteres ASCII |
ptr, ma |
0x0012ffac .4...0...".0W&.......1W&.0.:W..1...."..1.JO&.1.2.."..1...0y....1 |
m |
16 bytes en hexadecimal, seguidos de 16 caracteres ASCII |
ptr, m |
0x0012ffac B3 34 CB 00 84 30 94 80 FF 22 8A 30 57 26 00 00 .4...0...".0W&.. |
mb |
16 bytes en hexadecimal, seguidos de 16 caracteres ASCII |
ptr, mb |
0x0012ffac B3 34 CB 00 84 30 94 80 FF 22 8A 30 57 26 00 00 .4...0...".0W&.. |
mw |
8 palabras |
ptr, mw |
0x0012ffac 34B3 00CB 3084 8094 22FF 308A 2657 0000 |
md |
4 palabras dobles |
ptr, md |
0x0012ffac 00CB34B3 80943084 308A22FF 00002657 |
mq |
2 palabras cuádruples |
ptr, mq |
0x0012ffac 7ffdf00000000000 5f441a790012fdd4 |
mu |
Caracteres de 2 bytes (Unicode) |
ptr, mu |
0x0012fc60 8478 77f4 ffff ffff 0000 0000 0000 0000 |
Especificador de tamaño para punteros como matrices en la depuración de interoperabilidad con C++/CLI o Editar y continuar de C++
Si tiene un puntero a un objeto que desea ver como una matriz, puede utilizar un entero para especificar el número de elementos de matriz:
Especificador |
Formato |
Expresión |
Valor mostrado |
---|---|---|---|
n |
Entero decimal |
pBuffer[32] |
Muestra pBuffer como una matriz de 32 elementos. |