私はいくつかの単語をとり、それらがスペース文字、 "、" - "を数えずに回文かどうかを調べる必要があります。palindromeプログラムの本当に奇妙な問題
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main()
{
int inputs;
for (int i=0;i<inputs;i++)
{string str;
getline(cin, str);
transform(str.begin(), str.end(), str.begin(), ::tolower);
str.erase(remove_if(str.begin(),str.end(),','),str.end());
str.erase(remove_if(str.begin(),str.end(),'-'),str.end());
str.erase(remove_if(str.begin(),str.end(),' '),str.end());
if (str == string(str.rbegin(), str.rend()))
cout << "Y ";
else
cout << "N "; }
}
問題:/usr/include/c++/4.9/bits/stl_algobase.h:71:0からインクルードファイルで 、/usr/include/c++/4.9/bits/char_traits.hから: 39、from /usr/include/c++/4.9/ios:40、from /usr/include/c++/4.9/ostream:38、/usr/include/c++/4.9/iostream:39、from solution.cc:1 :/ usr/include/C++/4.9/bits/predefined_ops.h: 'boolのインスタンス化で__gnu_cxx :: __ ops :: _ Iter_pred < _Predicate ::(_Iterator)[_Iterator = __gnu_cxx :: __ normal_iterator>; (_ForwardIterator、_ForwardIterator、_Predicate)[_ForwardIterator = __gnu_cxx :: __ normal_iteratorを使用して、_ForwardIteratorから_ForwardIterator、_ForwardIterator、_ForwardIterator、_Predicate = char] ':/ usr/include/C++/4.9/bits/stl_algo.h:866:28が必要です。 _FIter std :: remove_if(_FIter、_FIter、_Predicate)[_FIter = __gnu_cxxを指定すると、_Predicate = __gnu_cxx :: __ ops :: _ Iter_pred] '/ usr/include/C++/4.9/bits/stl_algo.h:937:47: :: __ normal_iterator>; _Predicate = char] 'solution.cc:12:49:ここから必要です/ usr/include/C++/4.9/bits/predefined_ops.h:231:30:エラー:式を関数として使用できません{return bool(_M_pred( *__それ)); }^
(私に完全なジバリッシュ) すべての解決策はありますか?あなたが望むよう回文ため
各単語または一連の単語をテストしていますか。私は境界が何であるか不明です。 –
C++でこれを行い、アルゴリズムを使いたければ、これは 'std :: reverse'と' std :: remove_if'を使った5行または6行のプログラムです。 – PaulMcKenzie
[小さなプログラムをデバッグする方法](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/) –