Доброго времени суток. Имеется класс, который изменяет кодировку консоли. Код:
#include "stdafx.h"
#include
class edit_locale
{
int old_cin;
int old_cout;
public:
edit_locale(int);
~edit_locale();
};
int main()
{
edit_locale(1251);
std::cout << "Иван" << std::endl;
return 0;
}
edit_locale::edit_locale(int cp)
{
this->old_cin = GetConsoleCP();
this->old_cout = GetConsoleOutputCP();
SetConsoleCP(cp);
SetConsoleOutputCP(cp);
}
edit_locale::~edit_locale()
{
SetConsoleCP(this->old_cin);
SetConsoleOutputCP(this->old_cout);
}
Проблема заключается в следующем: функция SetConsole срабатывает только в конструкторе, в main - функции изменений не происходит. И деструктор не вызывается. С чем это может быть связано? Спасибо.
Ответ
Проблема в строчке
edit_locale(1251);
Вы создаёте временный объект, который тут же, в этой же строчке уничтожается.
Пишите так:
edit_locale l(1251);
Комментариев нет:
Отправить комментарий