Std::string::find_first_of没有返回期望的值
std::string::find_first_of does not return the expected value
我试图在c++中创建一个XML解析器。我目前使用cygwin和gcc来编译和gdb来调试。我有这段代码:
const size_t mDataSize = mData.size();
...
size_t ltPos = mData.find_first_of('<', pos);
if (ltPos==mData.npos) {
...
mData声明为私有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 '<'
我期待639作为调用find_first_of的结果,但我得到4294967295(这是-1在一个带符号的32位int和匹配std::string::npos)。有人能为这种行为辩护吗?或者告诉我如何解决这个问题?
所以mData被声明为引用?如果是这样,它并不真正保存内容,而是保存对内容的引用。调用find_first_of时mData所指的东西是否还存在?
相关文章:
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- 什么时候在C++中返回常量引用是个好主意
- 你能重载对象变量名本身返回的内容吗
- 为什么 Serial.println(<char[]>);返回随机字符?
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 如何获取std::result_of函数的返回类型
- QueryWorkingSet总是返回false
- 什么 /可以/ 你从一个函数返回. 并期望它在到达时还活着?
- GCC:我什么时候可以期望返回大型C++对象是有效的
- CUDA FFT不会返回我期望的值
- C++我可以期望所有编译器都不会销毁返回的副本
- 尝试打印出指针的值,期望指针指向的对象的地址,相反,编译器返回对象的值
- 二叉树搜索没有返回期望的值
- Std::string::find_first_of没有返回期望的值
- HMAC-SHA1不返回期望的哈希值
- Getenv函数没有返回期望的答案
- sizeof打包位域返回4,但我期望是1.它是怎么来的,我怎么能解决
- Get函数没有返回我所期望的
- 返回语句返回一个空指针值而不是期望的值
- 如何通过引用返回一个向量,隐式期望一个空向量作为输入