Прежде всего, это должно быть действительно разрешено на C и стандартными функциями C UNIX (из-за ограничений проекта). Таким образом, C++ или альтернативные библиотеки выходят за рамки вопроса.Программное изменение десятичного разделителя с помощью C setlocale()
Я знаю, как установить локаль пользователя по умолчанию с помощью setlocale, а также установить стандартные локали C/POSIX.
Однако, я в ситуации, когда разделитель десятичных знаков задан в файле, поэтому я хочу, чтобы моя программа временно меняла разделитель десятичной дроби.
LC_NUMERIC ожидает название локали ... но я не хочу указывать его имя локали, но символ разделителя напрямую.
Как это можно сделать?
Действительно, мне это не нравится, однако причина в том, что это не объем работы, а тот факт, что он включает в себя создание системных файлов, которые должны быть установлены на машине пользователя. Если новый языковой стандарт может быть установлен программно изнутри приложения без использования файлов локали, это было бы хорошо для меня. – cesss
Нет. Взгляните на приведенный выше пример. Они описывают методы компиляции и _use_ locale, не устанавливая их в системную папку. – user3159253
Обычно рецепт включает создание временной папки ([mkdtemp] (http://linux.die.net/man/3/mkdtemp)), хранение файлов определения локалей в этой папке, «компиляция» и последующее использование нового locale, опять же, из временного каталога. Может быть, потребуется меньше усилий, чтобы использовать некоторые функции форматирования номера, которые не требуют локализации как такового, а скорее настраиваемого форматирования. Однако, если вы хотите/должны остаться с языковым материалом, я боюсь, что у вас нет другого выбора. – user3159253