так и будет, поскольку символ в UTF-8 может занимать разное количество байт.
Ну это и ежу понянтно. Меня интересовала не причина данной проблемы, а выход из неё.
wstring устраивает, только почему-то не работает getline (wcin,<переменная>);, точнее не работает, там где надо. Если просто пишу которкую программу
Код: Выделить всё
#include <iostream>
#include <string>
#include <locale>
using namespace std;
int gtl()
{
setlocale(LC_CTYPE, "");
wstring str;
getline (wcin,str);
wcout << str << endl;
}
main()
{
gtl();
}
, то работает. А в более большой программе - нет, компилируется без предупреждений, но оператор getline как будто игнорирует, а wcin >> str; на этом месте работает вполне нормально. Никто не знает, в чём может быть подвох?