@DVoropaev
Ставлю + к карме на хабре за ответы на вопросы

Почему некорректно обрабатываются строки в C++, и как это исправить?

вместо русских букв из s1 в s2 копируется белиберда.
s1 выводится нормально, а s2 - нет.
#include <iostream>
#include <string>

using namespace std;

int main(){
string s1 = "АБВГД";
string s2 = "ABCDE";
cout << s1 << endl << s2 << endl;
for(int i = 0; i < 5; i++)
	s2[i] = s1[i];
cout << s1 << endl << s2 << endl;
return 0;
}

работа:

$ g++ ./st.cpp
$ ./a.out
АБВГД
ABCDE
АБВГД
АБ�
  • Вопрос задан
  • 152 просмотра
Пригласить эксперта
Ответы на вопрос 2
Вы работаете с юникодом и русские буквы занимают не 1 байт, а 2?
Ответ написан
Nipheris
@Nipheris Куратор тега C++
cppwhispers.blogspot.ru/2012/11/unicode-and-your-a...

In GCC, on modern systems, the default encoding for char string literals is UTF8.

А чтобы не зависеть от компилятора и среды, курите современную теорию: раз, два.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы