C++ の書式指定子
ウォッチ ウィンドウまたは [クイック ウォッチ] ダイアログ ボックスでネイティブ コードをデバッグする場合、書式指定子を使用して値を表示する書式を変更します。
(書式指定子のほとんどはネイティブ コード専用ですが、Visual C# にはいくつかの書式指定子があります。「C# の書式指定子」を参照してください。)
また、イミディエイト ウィンドウ、コマンド ウィンドウ、ソース ウィンドウでも、書式指定子を使用できます。これらのウィンドウで式の上にカーソルを合わせると、結果が [データヒント] に表示されます。[データヒント] には、[データヒント] 表示の書式指定子が反映されます。
[!メモ]
Visual Studio のネイティブ デバッガーが新しいデバッグ エンジンに移行しました。この変更では、いくつかの既存の書式指定子が新しい書式指定子に置き換えられました。移行が完了していない場合、C++/CLI での相互運用機能 (ネイティブとマネージの混合) デバッグまたは C++ エディット コンティニュを使用したデバッグでは、以前のデバッガーが引き続き使用されます。このトピックのセクションでは、各デバッグ エンジンの書式指定子を示します。
Visual Studio 2012 format specifiers では、新しいデバッグ エンジンの書式指定子について説明します。
Format specifiers for interop debugging and C++ edit and continue では、従来のデバッグ エンジンの書式指定子について説明します。
目次
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
例
nVar が整数変数であり、その変数に含まれる値 0x0065 が [ウォッチ] ウィンドウに表示されているとします。整数ではなく文字として値を表示するには、[名前] 列で変数名の後に文字書式指定子 c を追加します。
これによって、[値] 列には、整数値 0x0065 の代わりに文字値 101 'e' が表示されます。
書式指定子を配列の要素やオブジェクトのメンバーに適用する場合は、各要素またはメンバーに直接適用する必要があります。配列やオブジェクトの全体に書式を適用することはできません。たとえば、配列 nArray があり、先頭から 4 つの要素を文字書式で表示するとします。この場合は、[ウォッチ] ウィンドウで次の式を入力します。
nArray[0],c
nArray[1],c
nArray[2],c
nArray[3],c
Visual Studio 2012 の書式指定
次の表では、C++/CLI での相互運用機能 (ネイティブとマネージの混合) デバッグまたは C++ エディット コンティニュを使用したデバッグを行わないときに、Visual Studio 2012 で使用できる書式指定子を示します。
太字の指定子は、C++/CLIC での相互運用機能デバッグまたは C++ エディット コンティニュを使用したデバッグではサポートされていません。
指定子 |
形式 |
式 |
表示される値 |
---|---|---|---|
d |
10 進整数 |
0xF000F065, d |
-268373915 |
o |
符号なし 8 進整数。 |
0xF065, o |
0170145 |
x h |
16 進整数。 |
61546, x 61541, h |
0x0000f06a |
X H |
16 進整数。 |
61541, X 61546, H |
0x0000F06A |
c |
単一文字。 |
0x0065, c |
101 'e' |
s |
ASCII 文字列 |
0x0012fde8, s |
"Hello world" |
sb |
ASCII 文字列 |
0x0012fde8, sb |
Hello world |
su |
Unicode 文字列 |
0x0012fde8, su |
L"Hello world" |
sub |
Unicode 文字列 |
0x0012fde8, sub |
Hello world |
s8 |
UTF-8 文字列 |
0x0012fde8, s8 |
"Hello world" |
s8b |
UTF-8 文字列 |
0x0012fde8, s8b |
Hello world |
bstr |
BSTR 文字列 |
0x0032fe8, bstr |
Hi there |
en |
C++ の列挙型に対する評価式で使用されます。列挙定数の名前のみを表示し、数値は省略します。 |
enumValue,en |
EnumValue |
, na |
&myGlobal, n winmain, na |
ポインターのアドレスは表示されません。 |
|
nd |
pb,nd |
pb の基底クラスの情報のみ表示され、派生クラスは無視されます。 |
|
hr |
HRESULT または Win32 エラー コード。デバッガーが HRESULT を自動的にデコードする場合、この指定子は不要です。 |
0x00000000L, hr |
S_OK |
wc |
Windows クラス フラグ。 |
0x00000040, wc |
WC_DEFAULTCHAR |
wm |
Windows メッセージ番号。 |
0x0010, wm |
WM_CLOSE |
! |
データ型の表示カスタマイズをすべて無視した、未処理の書式。 |
i ! |
4 |
Visual Studio 2012 での配列としてのポインターのサイズ指定子
オブジェクトに対するポインターを配列として表示する場合、整数または式で配列要素数を指定できます。
指定子 |
形式 |
式 |
表示される値 |
---|---|---|---|
いいえ |
10 進数または 16 進数の整数 |
pBuffer,[32] pBuffer,[0x20] |
pBuffer が 32 要素の配列として表示されます。 |
[exp] |
整数に評価される有効な C++ 式 |
pBuffer,[bufferSize] |
bufferSize が評価され、pBuffer が評価された要素数の配列として表示されます。 |
expand(n) |
pBuffer, expand(1,2) |
pBuffer の 2 番目の子の 3 番目の子が表示されます。 |
C++/CLI での相互運用機能デバッグおよび C++ エディット コンティニュ用の書式指定子
太字の指定子は、ネイティブと C++/CLI コードのデバッグおよび C++ エディット コンティニュを使用したデバッグでのみサポートされています。
指定子 |
形式 |
式 |
表示される値 |
---|---|---|---|
d、i |
符号付き 10 進整数。 |
0xF000F065, d |
-268373915 |
u |
符号なし 10 進整数。 |
0x0065, u |
101 |
o |
符号なし 8 進整数。 |
0xF065, o |
0170145 |
x、X |
16 進整数。 |
61541、x |
0x0000f065 |
l、h |
d、i、u、o、x、X の long 型または short 型のプリフィックス。 |
00406042,hx |
0x0c22 |
f |
符号付き浮動小数点数値。 |
(3./2.), f |
1.500000 |
e |
符号付き指数表記。 |
(3./2.), e |
1.500000e+000 |
G |
符号付き浮動小数点数値または符号付き指数表記の短い方。 |
(3./2.), g |
1.5 |
c |
単一文字。 |
0x0065, c |
101 'e' |
s |
String |
0x0012fde8, s |
"Hello world" |
su |
Unicode 文字列 |
0x0012fde8, su |
L"Hello world" |
sub |
Unicode 文字列 |
0x0012fde8, sub |
Hello world |
s8 |
UTF-8 文字列 |
0x0012fde8, s8 |
"Hello world" |
hr |
HRESULT または Win32 エラー コード。デバッガーが HRESULT を自動的にデコードする場合、この指定子は不要です。 |
0x00000000L, hr |
S_OK |
wc |
Windows クラス フラグ。 |
0x00000040, wc |
WC_DEFAULTCHAR |
wm |
Windows メッセージ番号。 |
0x0010, wm |
WM_CLOSE |
! |
データ型の表示カスタマイズをすべて無視した、未処理の書式。 |
i ! |
4 |
C++/CLI での相互運用機能デバッグおよび C++ エディッ トコンティニュでのメモリ位置の書式指定子
メモリ位置を表すために使われる書式シンボルを次の表に示します。メモリ位置指定子は、任意の値、または位置を評価する式に使用できます。
シンボル |
形式 |
式 |
表示される値 |
---|---|---|---|
ma |
64 ASCII 文字。 |
ptr, ma |
0x0012ffac .4...0...".0W&.......1W&.0.:W..1...."..1.JO&.1.2.."..1...0y....1 |
分 |
16 バイトの 16 進数。16 文字の 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 バイトの 16 進数。16 文字の 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 ワード。 |
ptr, mw |
0x0012ffac 34B3 00CB 3084 8094 22FF 308A 2657 0000 |
md |
4 ダブルワード。 |
ptr, md |
0x0012ffac 00CB34B3 80943084 308A22FF 00002657 |
mq |
2 クワドワード。 |
ptr, mq |
0x0012ffac 7ffdf00000000000 5f441a790012fdd4 |
mu |
2 バイト文字 (Unicode) |
ptr, mu |
0x0012fc60 8478 77f4 ffff ffff 0000 0000 0000 0000 |
C++/CLI での相互運用機能デバッグおよび C++ エディッ トコンティニュでの配列としてのポインターのサイズ指定子
オブジェクトに対するポインターを配列として表示する場合、整数で配列要素数を指定できます。
指定子 |
形式 |
式 |
表示される値 |
---|---|---|---|
n |
10 進整数 |
pBuffer[32] |
pBuffer が 32 要素の配列として表示されます。 |