【发布时间】:2019-07-23 10:23:00
【问题描述】:
我正在编写代码来检查一个句子是否是回文。我觉得我的逻辑是正确的,但是用于检查字符串反转的 if 语句似乎不起作用。我在网上尝试了很多解决方案,但仍然没有。每个字符串都被视为不是回文。我觉得错误在(句子==反向):
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
#include <sstream>
using namespace std;
int main(int argc, char *argv[]) {
while (true) {
string sentence;
string reverse = "";
cout << "Enter a sentence below to check (-1 to end):" << endl;
getline(cin, sentence);
if (sentence == "q") {
break;
}
for (int i = sentence.length(); i >= 0; i-- ) {
reverse += sentence[i];
}
cout << sentence << " reversed is: " << "[" << reverse << "]" << endl;
if (sentence == reverse) {
cout << sentence << " is a palindrome" << endl;
} else {
cout << sentence << " is not a palindrome" << endl;
}
cout << endl;
}
}
任何帮助将不胜感激。
【问题讨论】:
-
你应该使用 String::compare cplusplus.com/reference/string/string/compare
-
当你打印出句子及其反义词时会打印出什么?此外,您将通过要求 -1 结束但实际测试 q 来彻底混淆您的用户
-
@Dougie
compare用于排序,==用于相等。
标签: c++ string if-statement operator-keyword