忽略空格 在回文作业中使用 getline C++
Ignore Spaces Using getline in C++ Palindrome homework
我试图使用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;
假设您的字符串s
是ufo tofu
。擦除所有空格后,它将变得ufotofu
.这样您就可以轻松检查它是否是回文。
这个东西是如何工作的?
- 好吧,我们声明一个名为
s
的字符串。在该字符串中,我们将存储我们的ufo tofu
输入。 - 我们使用do-while循环将我们的"句子"输入到字符串中。我们可以只使用
getline(cin, s);
,但是如果您按一次回车键,它将停止您的程序。 - 接下来,我们使用函数
remove
和erase
的函数组合:作为开始参数,我们使用函数remove
,它找到字符串中的所有空格,将它们推送到容器的末尾(在我们的例子中是string s
),并返回该"推送"的开始迭代器,第二个参数告诉我们从开始迭代器到结束删除容器的每个元素。 - 我们只是打印出字符串,但现在没有空格!
我认为这是非常简单的方法,但如果它对您没有用,我很抱歉浪费您阅读所有这些时间! :)
相关文章:
- Seg Fault Issue C++ (file IO / getline)
- 当用户键入分隔符时,停止getline()输入
- getline() 的原型/库是什么;
- 错误 没有与参数列表匹配的重载函数"getline"实例
- 如何在 c++ 中使用 ',' 作为 getline 分隔符
- 错误:调用'getline'没有匹配函数
- 如何在 c++ 中使用 getline 从文件中读取字符串?
- 将 getline() 与文件一起使用
- 我有三个 getline,但是一旦编译,输入就太多了
- 在 std::getline 和 std::cin 期间卡在循环中
- 为什么 getline() 不读取文本文件中的所有内容?
- 有没有办法在不使用 getline() 的情况下从.csv文件中读取?
- 确切地说,如何解释 std::getline(stream, string) 函数在C++中填充的字符串
- std::getline没有在while循环中重新请求用户输入
- 谁能告诉我我用 getline 做错了什么 (cpp) 格式
- Getline(cin,str)的奇怪输出
- 我在C++中使用 getline() 函数时遇到问题
- 而循环跳过 cin.getline() 对于 C 字符串
- 如何在 getline 中删除/忽略超过特定数字的字符?
- 使用 getline(cin, var) 两次在进行字符串比较时会产生错误 (==)