Я хочу стереть все числа в строке (в конечном итоге все символы и пробелы) и сохранить все буквы в строке. В конечном итоге я пытаюсь найти палиндромы из больших блоков текста.Почему я не могу стереть числовые символы строки?
С тем, что я получил прямо сейчас, он будет стирать цифры; плюс все другие нецифровые символы после первого числового символа, который стирается. Я хочу знать, почему это делается и что я могу сделать, чтобы удалить только числовые символы.
#include <iostream>
#include <string>
#include <cctype>
#include <ctype.h>
#include <iterator>
using namespace std;
int main()
{
bool con = true;
while (con == true)
{
cout << "Enter a string: ";
string input;
getline(cin, input);
/** here is where I am attempting to erase all numeric characters in input string**/
for(int i=0; i<input.length(); i++){
if(isdigit(input.at(i))){
string::iterator it;
it=input.begin()+i;
input.erase(i);
break;
}
}
string go;
cout << input << endl;
cout << "Continue? y/n " << endl;
getline(cin, go);
if(go != "y")
con = false;
}
system("pause");
return 0;
}
Обратите внимание, что вы можете использовать 'зЬй :: remove_if' в сочетании либо с лямбда или' станд :: not1' и 'std :: isalpha' для удаления всех, кроме алфавитных символов. Для только числовых символов, 'std :: remove_if' и' std :: isdigit'. – chris
Спасибо. Тогда мне придется использовать isalpha. –
@chris, 'std :: isalpha' не будет работать в этом случае, потому что он возвращает' int', а не 'bool'. Из-за необходимости неявного преобразования типов в этом случае он не будет работать. –