Проблема:
У меня есть мультиплатформенное приложение (win, mac, * nix) на основе QT, которое анализирует файлы ascii, содержащие десятичные числа.
синтаксический анализ выполняется с использованием множества различных частей кода, которые используют что-либо из строковых данных qt, c ++ stdin, oldstyle scanf и т. Д.
В файлах ascii всегда есть символ '.' (точка) в виде десятичного разделителя (например, в файле, который нужно проанализировать, 1/10 записывается как 0,1 во многих странах в качестве стандарта).
люди, использующие приложение в операционной системе, локализованной для использования запятой через запятую, сталкиваются с множеством проблем (например, для французских пользователей scanf рассчитывает найти 0,1 в качестве действительного текстового представления 1/10 и если найдет 0,1 scanf проанализирует его как 0)
Как я могу быть уверен, что указание локали ОС на то, как должна быть записана десятичная точка, всегда игнорируется?
Безопасно ли предполагать, что добавление
QLocale::setDefault(QLocale(QLocale::English,QLocale::UnitedStates));
достаточно, чтобы избавиться от всех этих проблем?
Любое предложение для портативных способов установки локали в глобальном масштабе?