Во-первых, обратите внимание, что английские заглавные буквы в таблице ASCII попадают в этот диапазон 65-90.Если использовать прописную букву static_cast<int>('A')
, получится целое число.Если после обводки число находится между 65-90, мы знаем, что это заглавная буква.Для маленьких букв диапазон составляет 97-122.В противном случае символ не является буквой в принципе.
Проверьте, создайте массив или вектор bool и отследите повторяющиеся буквы.Простым подходом является
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
string str("ABCDAKEAK");
vector<bool> vec(26,false);
for(int i(0); i < str.size(); ++i){
if( !vec[static_cast<int>(str[i]) - 65] ){
cout << str[i];
vec[static_cast<int>(str[i]) - 65] = true;
}else{
cout << "-";
}
}
cout << endl;
return 0;
}
Примечание: я предполагаю, что ввод только буквы, и они являются заглавными.Идея сосредоточена вокруг отслеживания с помощью bool.