C++でXMLパーサーを作成しようとしています。私は現在、cygwinとgccを使用してコンパイルし、gdbを使用してデバッグしています。私はこのコードを持っています:
const size_t mDataSize = mData.size();
...
size_t ltPos = mData.find_first_of('<', pos);
if (ltPos==mData.npos) {
...
mDataは、クラス内でprivate const std :: string&として宣言され、XMLファイルのコンテンツを保持します。gdbでデバッグした後、次のことがわかりました。
(gdb) print pos
$12 = 636
(gdb) print mDataSize
$13 = 2692
(gdb) n
141 size_t ltPos = mData.find_first_of('<', pos);
(gdb) print ltPos
$14 = 114
(gdb) print pos
$15 = 636
(gdb) n
143 if (ltPos==mData.npos)
(gdb) print ltPos
$16 = 4294967295
(gdb) print mData[636]
$17 = (const char &) @0xb2b2a8: 10 '\n'
(gdb) print mData[637]
$18 = (const char &) @0xb2b2a9: 32 ' '
(gdb) print mData[638]
$19 = (const char &) @0xb2b2aa: 32 ' '
(gdb) print mData[639]
$20 = (const char &) @0xb2b2ab: 60 '<'
find_first_ofを呼び出した結果639を期待していましたが、4294967295(符号付き32ビットintでは-1であり、std :: string :: nposと一致します)を取得しています。誰かがこの行動を正当化できますか?または、これを回避する方法を教えてください。