7

質問:

以下に示すように、WinDbg を使用してC++イテレータのを表示する方法:

for (vector<string>::iterator i = args.begin(); i != args.end(); i++)
//omitted
//for instance:
} else if (*i == "-i") {//attempting to display the value of *i
        ++i;
        if (!::PathFileExistsA(i->c_str()))
        {

ノート:

使用?? C++ 式の評価コマンド。次のように表示されます。

0:000> ?? i

class std::_Vector_iterator<std::basic_string<char,
std::char_traits<char>,
std::allocator<char> >,
std::allocator<std::basic_string<char,
std::char_traits<char>,
std::allocator<char> > > >

   +0x000 _Mycont          : 0x0012ff40 std::_Container_base_secure
   +0x004 _Mynextiter      : (null) 
   +0x008 _Myptr           : 0x009c6198 

std::basic_string<char,std::char_traits<char>,std::allocator<char> >
  • 別のコマンドで値を表示/印刷*iできますか- 間違っている場合は修正してください
4

2 に答える 2

9

試す:

dt -r i

イテレータを再帰的にダンプします。メンバーの 1 人が、あなたが求める情報である必要があります。冗長ですが効果的です。

于 2009-04-16T21:06:49.083 に答える
1

難しいのは、イテレータで*i関数呼び出しを呼び出すことです。必要な文字列は、 atoperator*によって指されている可能性があります。_Myptr0x009c6198

于 2009-04-16T21:07:15.900 に答える