QLocale, какова область применения глобального QLocale :: setDefault ()? - PullRequest
2 голосов
/ 06 апреля 2010

Проблема:

  • У меня есть мультиплатформенное приложение (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));

достаточно, чтобы избавиться от всех этих проблем? Любое предложение для портативных способов установки локали в глобальном масштабе?

1 Ответ

1 голос
/ 23 июля 2010

Да, этого должно быть достаточно, поскольку это означает, что везде, где QLocale создается без аргументов, он будет использовать американский английский.Область применения - широкая область применения (QApplication).

...