Есть программа, одна из ее функций сама формирует простенький SVG-файл. Проблема в том, что в SVG в качестве разделителя допустима толька точка, а в программе во многих локалях нужна естественно запятая, причем сейчас переключать локаль приходится довольно часто.
Два вопроса:
1. Возможно кто-нибудь в курсе, как сообщить в документе SVG, что разделителем будет запятая или иной символ (xml charset на это не влияет).
2. Возможно есть какой то кроссплатформенный ключик для printf, чтобы использовать определенный разделитель?
3. Как лучше переключать локаль через setlocale? Пока это делается вызовами setlocale(LC_NUMERIC, "C") и setlocale(LC_NUMERIC, curlocale). В man-ах ко всем платформам нашел интересную заметку (цитата из POSIX):
The string returned by setlocale() is such that a subsequent call with that string and its associated category shall restore that part of the program's locale. The application shall not modify the string returned which may be overwritten by a subsequent call to setlocale().
То есть получается, что можно делать примерно так для ускорения переключения локалей:
oldlocale = setlocale(LC_NUMERIC, "C");
setlocale(LC_NUMERIC, oldlocale);
P.S. Вопрос не только в скорости, но и в том, как правильно делать операцию временной смены локали.