Используйте std :: to_string () для преобразования вашего n в строку:
std::string s = std::to_string(n);
затем конвертируйте c в символ, добавив к нему 48, что эквивалентно «0» + ваше число c = некоторый символ от «0» до «9».
char myChar = '0' + c;
Теперь удалите все вхождения myChar, просматривая строку и удаляя индекс, где myChar == s [i]
for(int i = 0; i < s.size(); i ++){
If(myChar == s[i]){
s.erase(s.begin()+i);
i--;
}
}
Наконец, преобразовать строку обратно в int:
n = std::stoi (s);
Редактировать: вы можете сделать это с помощью операций деления и по модулю, как упоминалось в одном из комментариев.
Вот пример, который я только что собрал:
bool sign = false; // false -> + , true -> -
if (n < 0) { n = -n; sign = true; }
int back = 0;
int front = n;
int i = 0;
while (front > 0) {
if(front % 10 != c){
back += (front % 10) * std::pow(10, i++);
}
front /= 10;
}
n = sign ? -back : back;