忽略空格 在回文作业中使用 getline C++

Ignore Spaces Using getline in C++ Palindrome homework

本文关键字:getline C++ 作业 空格 回文      更新时间:2023-10-16

我试图使用getline();跳过代码中的空格

我想我解决了间距问题,但我正在尝试同时从单词的开头和单词的结尾进行代码检查,这样当我输入像"UFO豆腐"这样的句子时,它会作为回文返回。

我尝试删除空格,但这只会导致系统返回错误。

#include <iostream>
#include <string>
#include <cctype>
using namespace std;
int main() {
string userInput;
int startInput;
int endInput;
bool isPalindrome = true;
startInput = userInput.length();
getline (cin, userInput);
cin.ignore();
for (int i = 0; i<(startInput/2); i++){
if (userInput[i] != userInput[(startInput -1) -i])
isPalindrome = false;
}
if (isPalindrome){
cout << userInput << " is a palindrome" << endl;
}
else {
cout << userInput << " is not a palindrome" << endl;
}
return 0;
}

当我提交要评分的代码时,我试图使输出返回为"不是回文"。

这是回来的两个错误;

4:比较输出 0/2 输出不同。请参阅下面的亮点。 特殊字符图例 输入 统计学 您的输出 统计是一个回文 预期产出 统计不是回文 6:比较输出 0/2 输出不同。请参阅下面的亮点。 特殊字符图例 输入 邪恶还活着 您的输出 邪恶还活着是回文 预期产出 邪恶还活着不是回文
string s;
do {
getline(cin, s);
}while(s.empty());
s.erase((remove(s.begin(),s.end(),' ')),s.end());
cout<<s<<endl;

假设您的字符串sufo tofu。擦除所有空格后,它将变得ufotofu.这样您就可以轻松检查它是否是回文。

这个东西是如何工作的?

  1. 好吧,我们声明一个名为s的字符串。在该字符串中,我们将存储我们的ufo tofu输入。
  2. 我们使用do-while循环将我们的"句子"输入到字符串中。我们可以只使用getline(cin, s);,但是如果您按一次回车键,它将停止您的程序。
  3. 接下来,我们使用函数removeerase的函数组合:作为开始参数,我们使用函数remove,它找到字符串中的所有空格,将它们推送到容器的末尾(在我们的例子中是string s),并返回该"推送"的开始迭代器,第二个参数告诉我们从开始迭代器到结束删除容器的每个元素。
  4. 我们只是打印出字符串,但现在没有空格!

我认为这是非常简单的方法,但如果它对您没有用,我很抱歉浪费您阅读所有这些时间! :)