Проблема состоит в том, что вы помещаете 2 символа в один пробел , вы видите, что A
- это один символ типа char
и хранится в виде 8 байтов. Где «10» рассматривается как массив символов, который имеет 3 символа 1
, 0
и \0
(нулевой символ). Поэтому заменить «А» на «10» так, как вы это делали, невозможно.
Что вы можете сделать:
if (s[i] == 'A') {
s[i] = '1';
s += '*'; // to add a single char onto the end.
for (int j = s.size(); j > i; --j)
s[j] = s[j - 1];
s[++i] = '0';
}
И чтобы распечатать его, сделайте следующее:
std::cout << s;
или
std::cout << s[i] << s[i + 1];
Опять же, поставив std::cout << s[i]
, вы выводите один символ.
EDIT:
За @ RemyLebeau вы можете использовать strreplace ()
if (s[i] == 'A') {
s.replace(i, 1, "10");
}