c++ - 字符串比较显示不相等

标签 c++

我正在学习 C++,其中一项练习 (Accelerated c++) 是编写一个查找回文的小程序。

为此,我创建了一个包含几个单词的 vector ,然后遍历该 vector 以查找回文。 在迭代时,我创建了每个单词的拷贝,将其反转,然后比较反转拷贝是否与原始单词匹配。

using namespace std;
vector<string> palindrome(vector<string> v){
  for(std::vector<string>::iterator iter = v.begin(); iter != v.end(); ++iter){
    string reversed_word;
    for(int i = iter->size(); i >= 0; i--){
      reversed_word += (*iter)[i];
    }
    if (!(*iter).compare(reversed_word)){
      cout << reversed_word << endl;
    }
    cout << reversed_word << endl;
    cout << *iter << endl;
  }
 return v
}


int main(){
  vector<string> dictionnary;
  dictionnary.push_back("coloc");
  dictionnary.push_back("elle");
  dictionnary.push_back("php");
  dictionnary.push_back("shahs");
  dictionnary.push_back("bonjour");
  dictionnary.push_back("random");

  palindrome(dictionnary);
  return 0;
}

但是,条件 !(*iter).compare(reversed_word) 不会返回回文单词的预期结果。为了检查,我已经显示了单词和反向单词,它们确实匹配。

我在这里错过了什么?

最佳答案

这个循环迭代了多少次?

for(int i = (*iter).size(); i >= 0; i--)

你可能想要 size()-1所以它不会越过单词的末尾。

同样,iter <= v.end()很少是对的。 end从不指向任何东西;它总是无效的。成语是!= v.end() .

另外,如果函数没有返回值,它的返回类型应该是void .

关于c++ - 字符串比较显示不相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40551928/

相关文章:

python - 使用 Python 调用 DLL 函数时出现 ctypes.ArgumentError

c++ - 使用 const 进行函数重载

c++ - 如何输入一个正数并打印出输入数字的平方根?

c++ - 可变参数模板特化问题

c++ - 使用带有 char* 键的 boost_unordered_hash_map

C++ LPCTSTR 到 char*

c++ - 检测 32 位或 64 位 Windows

c++ - 模板化需求表达式

c++ - getpid 在 linux 上使用 -std=c++11 作为编译器标志

c# - SkipLastField 在结束组标记上调用。 GoogleProtobuf(C# 和 C++)