Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Не работает imbue у stringstream в C++Builder2010

5.3K
15 сентября 2010 года
!Волк
95 / / 19.07.2006
Вот пример, где глобально выставляется русская локаль и делается попытка выставить классическую локаль у stringstream.
Код:
#include <iostream>
#include <locale>
#include <locale.h>
#include <sstream>

using namespace std;
int main(int argc, char* argv[])
{
  locale::global(locale("Russian_Russia.1251"));
  setlocale(LC_ALL, "Russian_Russia.1251");
  double d = 15.27;
  stringstream stream;
  stream << d;
  cout << "locale_ru: " << stream.str() << endl;
  // Очищаем буфер
  stream.str("");
  stream.imbue(locale::classic());
  stream << d;
  cout << "locale_classic: " << stream.str() << endl;
  cin.get();
  return 0;
}

В итоге выводится следующее:
 
Код:
locale_ru: 15,27
locale_classic: 15,27

В С++Builder2010(update 4,5), в обоих случаях выводится число с запятой, хотя во втором случае должна быть точка. В C++Builder6 нормально работает. Кто нибудь сталкивался с проблемой?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог