Вы не можете сделать:
string_a++
, если string_a
определен как массив . Это работает только для указателей, а массивы распадаются на указатели только в определенных обстоятельствах.
Если вы измените:
while (*string_a++ = *string_b++) {
cout << ++i << endl;
}
в:
char *pa = string_a, *pb = string_b; // a "specific circumstance" :-)
while (*pa++ = *pb++) {
cout << ++i << endl;
}
тогда все будет работать нормально, выводя:
string a: Good day!
string b: Hi!
1
2
3
string a: Hi!
string b: Hi!