在C ++ Palindrome作业中使用getline忽略空间

时间:2019-07-07 15:23:09

标签: c++

我正在尝试使用Field('h_id_card', requires=[IS_LENGTH(maxsize=13, minsize=13), IS_NOT_IN_DB(db, 'person.h_id_card')])

跳过代码中的空格

我想我已经解决了间距问题,但是我试图同时从单词的开头和单词的结尾进行代码检查,以便在键入“ ufo tofu”之类的句子时会以回文形式回来。

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

getline();

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

这是又回来的两个错误;

4: Compare output
0 / 2
Output differs. See highlights below. 
Special character legend
Input
statistics
Your output
statistics is a palindrome
Expected output
statistics is not a palindrome


6: Compare output
0 / 2
Output differs. See highlights below. 
Special character legend
Input
evil is alive
Your output
evil is alive is a palindrome
Expected output
evil is alive is not a palindrome

1 个答案:

答案 0 :(得分:0)

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);,但是如果您按Enter键一次,它将停止您的程序。
  3. 接下来,我们使用函数removeerase的函数组合:作为开始参数,我们使用函数remove,该函数查找字符串中的所有空格,并将其推入容器的末端(在我们的示例中为string s),并返回该“推送”的开始迭代器,第二个参数告诉我们从该开始迭代器到末尾删除容器的每个元素。
  4. 我们只是打印出字符串,但是现在没有空格了!

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