В проекте, над которым я сейчас работаю, я ссылаюсь на проприетарную динамическую библиотеку. Как только я запускаю функцию инициализации библиотеки, поведение регистрации и печати чисел меняется.
Запятые расставлены после каждого третьего десятичного знака. Т.е.
cout << 123456789 << endl
раньше печатал 123456789
, а теперь печатает 123,456,789
. Это ужасно раздражает, потому что такое поведение не то, что я хочу.
Эта проблема проявляется не только в бинарном файле, который я компилирую, но также проявляется во всех couts
и stringstreams
в библиотеках, которые я связываю с ним.
Я попытался использовать эту строку кода после вызова функции инициализации
setlocale(LC_ALL,"C");
думая, что это может сбросить мою локаль по умолчанию; но безрезультатно. Запятые остаются!!
Этот фрагмент кода:
std::cout.imbue(std::locale("C"));
работает, чтобы сбросить локаль couts
, и каждый stringstream
я тоже применяю ее. Однако действительно ли мне нужно вызывать imbue
для КАЖДОГО stringstream
, объявленного в КАЖДОЙ библиотеке, на которую я ссылаюсь? Есть некоторые проприетарные библиотеки, и я не могу изменить их исходный код.
Должен ли быть способ сбросить локаль обратно на "C"
глобально?