为什么我的字符串失去了它的值
Why is my string losing its value?
由于
某种原因,我的toCheck变量的值被删除了,我不知道为什么。 有什么建议吗?
bool
check(string toCheck){
printf("toCheck: %sn", toCheck.c_str());
ifstream list;
list.open("list.txt");
string temp;
while(list){
getline(list,temp);
printf("toCheck: '%s' temp: '%s'n",toCheck.c_str(), temp.c_str());
if(temp == toCheck){
printf("Username existsn");
return false;
}
}
printf("returning truen");
return true;
}
以下是它正在通过的内容: TestTrevor
这是输出:
toCheck: TestTrevor toCheck: '' temp: 'Trevor' toCheck: '' temp: '' Username exists
从您的评论中:
调试真的很难(这就是我使用
printf
的原因),因为我正在分叉和使用进程(这是我正在处理的 VoIP 项目的服务器),并且当我尝试遵循子进程时,gdb 不起作用。
强调我的。
如果动态分配给toCheck
的内存从未真正进入分叉进程,或者制作它但不知何故被丢弃/覆盖,我不会感到惊讶。
新信息:如果我注释掉
getLine(list, temp);
,那么它不会删除toCheck
,有什么想法吗?
这是程序中第一次需要std::allocator
来实际分配内存。
STL 在开发时从未考虑过分叉,因此完全有可能,而不是在这个用例中根本不起作用。
您可以检查调试器的情况。查看在哪个地址分配toCheck
的内存以及为temp
分配内存时会发生什么,但这是深入探讨。
由于您似乎对 gdb 有问题,您可以先尝试转储地址 ( printf("%x", &toCheck[0]);
)。
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 我的字符计数代码计算错误.为什么
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- cmake在我的项目中所需的所有静态库都不成功
- 为什么我的代码在输出中增加了93天
- 我的简单if-else语句是如何无法访问的代码
- 为什么我的for循环不能正确获取argv
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 0-1背包代码中的错误.我的代码中有什么错误
- 当我的阵列太大时出现分段错误
- 如何确认我的constexpr表达式实际上已经在编译时执行
- 为什么二进制搜索在我的测试中不起作用
- 如何指定我希望我的LIB链接到的DLL文件?-Visual Studio 2019
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 当我在main中声明了我的2d数组时,为什么我的程序会退出
- 为什么我的std :: Map失去了价值
- 为什么我的字符串失去了它的值
- 当我将类字符串变量放入另一个类的映射中时,类字符串变量将失去它的值
- 如何检测我的应用程序在Qt中失去焦点