我想擦除字符串中的所有數字(最終是所有符號和空格),並將所有字母字符保留在字符串中。我試圖最終做的是從大塊文本中搜索迴文。爲什麼我不能擦除字符串的數字字符?
我現在得到的東西會清除數字;加上被擦除的第一個數字字符後的所有其他非數字字符。我想知道爲什麼這樣做,以及我能做些什麼來讓它只擦除數字字符。
#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;
}
請注意,您可以結合使用'的std :: remove_if'與任何一個lambda或'STD :: not1'和'std :: isalpha'來移除除字母以外的所有字符。對於數字字符,「std :: remove_if」和「std :: isdigit」。 – chris
謝謝。那麼我必須使用isalpha。 –
@chris,'std :: isalpha'在這種情況下不起作用,因爲它返回一個'int',而不是'bool'。由於需要隱式類型轉換,因此在這種情況下會失敗。 –