Freigeben über


Formatbezeichner in C++

Beim Debuggen von systemeigenem Code im Überwachungsfenster oder im Dialogfeld Schnellüberwachung können Sie mithilfe von Formatbezeichnern das Format ändern, in dem ein Wert angezeigt wird.

(Die meisten Formatbezeichner gelten nur für systemeigenen Code, jedoch verfügt Visual C# über einen begrenzten Satz Formatbezeichner.Weitere Informationen erhalten Sie unter Formatbezeichner in C#.)

Formatbezeichner können im Direktfenster, im Befehlsfenster und sogar in den Quellcodefenstern verwendet werden.Wenn Sie in einen Ausdruck in diesen Fenstern anhalten, wird das Ergebnis in einem DataTip angezeigt.DataTips geben den Formatbezeichner in der DataTip-Anzeige wieder.

HinweisHinweis

Der systemeigene Debugger in Visual Studio wurde als neues Debugmodul konstruiert.Diese Änderung umfasste das Hinzufügen mehrerer neuer Formatbezeichner und das Entfernen von einigen alten.Der Übergang ist noch nicht abgeschlossen, und der ältere Debugger wird weiterhin verwendet, wenn Sie Interop-Debuggen (systemeigenes und verwaltetes Debuggen gemischt) mit C++/CLI ausführen und wenn Sie mithilfe der C++-Funktion "Bearbeiten und Fortfahren" debuggen.Abschnitte in diesem Thema erläutern die Formatbezeichner für jedes Debugmodul.

  • In Visual Studio 2012 format specifiers werden die Formatbezeichner im neuen Debugmodul beschrieben.

  • In Format specifiers for interop debugging and C++ edit and continue werden die Formatbezeichner im älteren Debugmodul beschrieben.

Inhalt

Example

Visual Studio 2012 format specifiers

  • Size specifiers for pointers as arrays in Visual Studio 2012

Format specifiers for interop debugging and C++ edit and continue

  • Format specifiers memory locations in interop debugging and C++ edit and continue

  • Size specifier for pointers as arrays in interop debugging and C++ edit and continue

Beispiel

Angenommen, nVar ist eine Ganzzahlvariable, und aus dem Überwachungsfenster wird ersichtlich, dass sie den Wert 0x0065 enthält.Um den Wert als Zeichen und nicht als ganze Zahl anzuzeigen, geben Sie in der Spalte "Name" hinter dem Variablennamen den Zeichenformatbezeichner c ein:

Anstatt der ganzen Zahl 0x0065 wird in der Spalte "Wert" nun der Zeichenwert 101 'e' angezeigt.

Um einen Formatbezeichner auf Elemente eines Arrays oder Member eines Objekts anzuwenden, müssen Sie diesen direkt für jedes Element bzw. jeden Member festlegen.Der Bezeichner kann nicht auf das Array oder Objekt im Ganzen angewendet werden.Angenommen, Sie verfügen über das Array nArray und möchten die vier ersten Elemente im Zeichenformat anzeigen.In diesem Fall würden Sie die folgenden Ausdrücke im Überwachungsfenster eingeben:

nArray[0],c
nArray[1],c
nArray[2],c
nArray[3],c

Visual Studio 2012-Formatbezeichner

In den folgenden Tabellen sind die Formatbezeichner angegeben, die Sie in Visual Studio 2012 verwenden können, wenn Sie kein Interop-Debuggen (systemeigenes und verwaltetes Debuggen) für den Code mit C++/CLI ausführen oder hierzu die C++-Funktion "Bearbeiten und Fortfahren" verwenden.

Fett formatierte Bezeichner werden nicht für das Interop-Debuggen mit C++/CLI oder für das Debuggen mit der C++-Funktion "Bearbeiten und Fortfahren" unterstützt.

Bezeichner

Format

Ausdruck

Angezeigter Wert

d

Ganze Dezimalzahl

0xF000F065, d

-268373915

o

Oktale ganze Zahl ohne Vorzeichen

0xF065, o

0170145

w

h

Ganze Hexadezimalzahl

61546, x

61541, h

0x0000f06a

X

S

Ganze Hexadezimalzahl

61541, X

61546, H

0x0000F06A

c

Einzelnes Zeichen

0x0065, c

101 'e'

s

ASCII-Zeichenfolge

0x0012fde8, s

"Hello world"

sb

ASCII-Zeichenfolge

0x0012fde8, sb

Hello World

su

Unicode-Zeichenfolge

0x0012fde8, su

L"Hello world"

sub

Unicode-Zeichenfolge

0x0012fde8, sub

Hello World

s8

UTF-8-Zeichenfolge

0x0012fde8, s8

"Hello world"

s8b

UTF-8-Zeichenfolge

0x0012fde8, s8b

Hello World

bstr

BSTR-Zeichenfolge

0x0032fe8, bstr

Hi there

en

Wird für einen Ausdruck verwendet, der zu einem C++-Enumerationstyp ausgewertet wird.Zeigt nur den Namen der Enumerationskonstante an und lässt den numerischen Wert weg.

enumValue,en

enumValue

, na

&myGlobal, n

winmain, na

Die Adresse des Zeigers wird nicht angezeigt.

nd

pb,nd

Es werden nur die pb-Basisklasseninformationen angezeigt, die abgeleiteten Klassen werden ignoriert.

hr

HRESULT oder Win32-Fehlercode.(Der Debugger decodiert HRESULT-Werte nun automatisch, sodass der Bezeichner in diesem Fall nicht erforderlich ist.)

0x00000000L, hr

S_OK

wc

Fensterklassenflag

0x00000040, wc

WC_DEFAULTCHAR

wm

Windows-Meldungsnummern

0x0010, wm

WM_CLOSE

!

Rohdatenformat, jegliche Ansichtsanpassungen für den Datentyp werden ignoriert.

i !

4

Größenbezeichner für Zeiger als Arrays in Visual Studio 2012

Wenn Sie einen Zeiger für ein Objekt haben, das Sie als Array anzeigen möchten, können Sie eine ganze Zahl oder einen Ausdruck verwenden, um die Anzahl von Arrayelementen zu bestimmen:

Bezeichner

Format

Ausdruck

Angezeigter Wert

n

Dezimalzahl oder ganze Hexadezimalzahl

pBuffer,[32]

pBuffer,[0x20]

Zeigt pBuffer als Array mit 32 Elementen an.

[exp]

Ein gültiger C++-Ausdruck, der für eine ganze Zahl ausgewertet wird.

pBuffer,[bufferSize]

Wertet die Puffergröße aus und zeigt pBuffer als Array der ausgewerteten Anzahl von Elementen an.

expand(n)

pBuffer, expand(1,2)

Zeigt das dritte untergeordnete Element des zweiten untergeordneten Elements von pBuffer an.

Formatbezeichner für das Interop-Debuggen mit C++/CLI oder für die C++-Funktion "Bearbeiten und Fortfahren".

Fett formatierte Bezeichner werden nur für das Debuggen von systemeigenem und C++/CLI-Code sowie für das Debuggen mit der C++-Funktion "Bearbeiten und Fortfahren" unterstützt.

Bezeichner

Format

Ausdruck

Angezeigter Wert

d,i

Ganze Dezimalzahl mit Vorzeichen

0xF000F065, d

-268373915

n

Ganze Dezimalzahl ohne Vorzeichen

0x0065, u

101

o

Oktale ganze Zahl ohne Vorzeichen

0xF065, o

0170145

x,X

Ganze Hexadezimalzahl

61541, x

0x0000f065

l,h

Langes oder kurzes Präfix für: d, i, u, o, x, X

00406042,hx

0x0c22

f

Gleitkommazahl mit Vorzeichen

(3./2.), f

1.500000

e

Wissenschaftliche Notation mit Vorzeichen

(3./2.), e

1.500000e+000

l

Gleitkommazahl oder wissenschaftliche Notation mit Vorzeichen, je nachdem, welche kürzer ist

(3./2.), g

1.5

c

Einzelnes Zeichen

0x0065, c

101 'e'

s

Zeichenfolge

0x0012fde8, s

"Hello world"

su

Unicode-Zeichenfolge

0x0012fde8, su

L"Hello world"

sub

Unicode-Zeichenfolge

0x0012fde8, sub

Hello World

s8

UTF-8-Zeichenfolge

0x0012fde8, s8

"Hello world"

hr

HRESULT oder Win32-Fehlercode.(Der Debugger decodiert HRESULT-Werte nun automatisch, sodass der Bezeichner in diesem Fall nicht erforderlich ist.)

0x00000000L, hr

S_OK

wc

Fensterklassenflag

0x00000040, wc

WC_DEFAULTCHAR

wm

Windows-Meldungsnummern

0x0010, wm

WM_CLOSE

!

Rohdatenformat, jegliche Ansichtsanpassungen für den Datentyp werden ignoriert.

i !

4

Formatbezeichner für Speicherbereiche beim Interop-Debuggen mit C++/CLI oder für die C++-Funktion "Bearbeiten und Fortfahren"

Die folgende Tabelle enthält Formatierungssymbole, die für Speicherbereiche verwendet werden.Bezeichner für Speicherbereiche können mit beliebigen Werten oder Ausdrücken verwendet werden, die als Speicherbereiche ausgewertet werden.

Symbol

Format

Ausdruck

Angezeigter Wert

ma

64 ASCII-Zeichen

ptr, ma

0x0012ffac .4...0...".0W&.......1W&.0.:W..1...."..1.JO&.1.2.."..1...0y....1

m

16 Bytes im Hexadezimalformat, gefolgt von 16 ASCII-Zeichen

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 im Hexadezimalformat, gefolgt von 16 ASCII-Zeichen

ptr, mb

0x0012ffac B3 34 CB 00 84 30 94 80 FF 22 8A 30 57 26 00 00 .4...0...".0W&..

mw

8 Wörter

ptr, mw

0x0012ffac 34B3 00CB 3084 8094 22FF 308A 2657 0000

md

4 Doppelwörter

ptr, md

0x0012ffac 00CB34B3 80943084 308A22FF 00002657

mq

2 Vierfachwörter

ptr, mq

0x0012ffac 7ffdf00000000000 5f441a790012fdd4

mu

2-Byte-Zeichen (Unicode)

ptr, mu

0x0012fc60 8478 77f4 ffff ffff 0000 0000 0000 0000

Größenbezeichner für Zeiger als Arrays beim Interop-Debuggen mit C++/CLI oder für die C++-Funktion "Bearbeiten und Fortfahren"

Wenn Sie einen Zeiger für ein Objekt haben, das Sie als Array anzeigen möchten, können Sie eine ganze Zahl verwenden, um die Anzahl von Arrayelementen zu bestimmen:

Bezeichner

Format

Ausdruck

Angezeigter Wert

n

Ganze Dezimalzahl

pBuffer[32]

Zeigt pBuffer als Array mit 32 Elementen an.