【问题标题】:string comparison fails c++字符串比较失败 C++
【发布时间】:2023-04-03 21:25:01
【问题描述】:

我真的不知道这里发生了什么,但是当我运行我的代码时,我在尝试比较两个字符串时遇到了一些疯狂的错误。

bool remove_entry(addlist& list, std::string fname, std::string lname){
    bool more = true;
    bool failed = false;
    contact* traversal_ptr = entry;
    contact* trailer = entry;

    while (more && !failed){
        if (traversal_ptr = NULL){
            failed = true;
        }
        else if (traversal_ptr->last_name != lname || traversal_ptr->first_name != fname){
            trailer = traversal_ptr;
            traversal_ptr = traversal_ptr->next;
        }
        else {
            trailer->next = traversal_ptr->next;
            delete traversal_ptr;
        }
    }
    return failed;
}

我在以下 xstring 块的返回行中遇到错误:

    int compare(const _Myt& _Right) const _NOEXCEPT
    {   // compare [0, _Mysize) with _Right
    return (compare(0, this->_Mysize, _Right._Myptr(), _Right.size()));
    }

我不知道为什么会这样。我知道放入的所有内容都是一个字符串。它甚至没有引发异常,所以我不知道该怎么做。看来这可能是我缺少的一些小东西。任何帮助将不胜感激。

【问题讨论】:

  • 设置断点,调试
  • 我确实设置了一个断点。那个 xstring 块是我走了多远,而且我对编码还很陌生,除了查看代码在哪里执行失败之外,我不太确定该怎么做。
  • 检查调用堆栈
  • 尝试将“traversal_ptr = NULL”更改为“traversal_ptr == NULL”,因为您将其设置为 NULL 而不是与 NULL 进行比较。
  • 成功了!谢谢你!

标签: c++ pointers stdstring


【解决方案1】:
    if (traversal_ptr = NULL){

应该是

    if (traversal_ptr == nullptr){

此外,正如您在评论中指出的那样,您需要将 more = false 添加到 else 块中,以终止循环。

【讨论】:

    猜你喜欢
    • 2011-08-13
    • 1970-01-01
    • 2016-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多