ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Общие вопросы программирования (https://forum.antichat.xyz/forumdisplay.php?f=206)
-   -   Setlocale и запись дробных чисел через sprintf. (https://forum.antichat.xyz/showthread.php?t=1470079)

Ya Zaregalsya 06.03.2023 09:28

У меня как и у многих вначале проекта прописано setlocale(LC_ALL, "Russian"), чтобы можно было нормально работать с кириллицей. Сегодня столкнулся с такой проблемой, что со сменой локализации sprintf начинает записывать дробные числа с запятой вместо точки, а функция stringstream при этом читает по американскому стандарту с разделителем в виде точки, в результате при чтении из файла данные ломаются, программа воспринимает дробное число как два числа, разделённых запятой. Вопрос такой, как настроить sprintf на запись через точку, либо stringstream на чтение через запятую?

SR_team 06.03.2023 11:39

это потому что ты смешал C с C++. SetLocale и sprintf это C. Соответственно настройки SetLocale влияют на sprintf. А stringstream это C++, там локаль задается через метод imbue

Ya Zaregalsya 28.03.2023 22:03

Цитата:

Сообщение от SR_team

это потому что ты смешал C с C++. SetLocale и sprintf это C. Соответственно настройки SetLocale влияют на sprintf. А stringstream это C++, там локаль задается через метод imbue

Точно. Оказалось, что в данном случае вообще не нужен принтф и можно записывать данные тем же стрингстримом, не смешивая разные либы.


Время: 01:48