Compartir a través de


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.