【问题标题】:C++ code crashing, can't figure out why [closed]C ++代码崩溃,无法弄清楚为什么[关闭]
【发布时间】:2013-09-20 12:59:21
【问题描述】:

当我从我的部分代码中通过 Word (2) 执行搜索时,我的 C++ 代码崩溃了。

它的作用是扫描 .txt 文件,然后打印出一些信息,然后它给了我选项,我的第二个选项是让我的代码崩溃。

导致它崩溃的代码部分是,它的目标是读取用户输入,然后扫描文件以查找匹配的单词,然后打印出它的定义。

案例2:

{
                string searchWord;
                cout << "Enter a word to search for: ";
                std::getline(std::cin, searchWord);
                Word *myWord = Dic.findWord(searchWord);
                if (myWord != NULL)
                {
                    cout << myWord->definition;
                }
                break;
            }

【问题讨论】:

  • 你试过调试器吗?
  • 这里使用std::vector 可以避免许多潜在问题,这也可以让您使用谓词查找单词。
  • @Moo-Juice 我该如何实现std::vector

标签: c++ debugging crash


【解决方案1】:

你在findWords 中的逻辑是错误的,你应该检查MAX_WORDS 之前你尝试比较而不是之后。像这样

Word* Dictionary::findWord(string searchWord)
{
    int wordIndex = 0;
    while (wordIndex < MAX_WORDS) {
        if (myWords[wordIndex]->word.compare(searchWord) == 0) {
            return myWords[wordIndex];
        }
        wordIndex++;
    }
    cout << "word not in dictionary";
    return NULL;
}

【讨论】:

  • 嘿干杯,停止崩溃,非常感谢。但是现在当我选择两个时,它只会跳过任何用户输入并打印输入要搜索的单词:单词不在字典中您已选择退出
  • @user2775243 这是另一个问题,这里很常见。基本上你的输入代码是错误的。看到这里有一个类似的问题,stackoverflow.com/questions/4241581/…,或者如果这个答案没有意义,请自己搜索一下,基本上这个问题一直被问和回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-23
  • 1970-01-01
  • 2018-05-16
  • 2011-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多