C(++)中的sprintf,逗号和点(以及本地化?)

时间:2010-09-14 14:34:49

标签: c++ c xml printf openframeworks

我在使用openframeworks的项目中工作,最近我在编写XML时遇到了一些问题。我已将问题追溯到sprintf:

似乎在某些条件下,sprintf调用可以在浮点数上写逗号而不是点(例如“2,56”而不是“2.56”)。在我的语言环境中,浮动数字用','表示,以将小数与单位分开。

我无法在一个简单的示例中重现此行为,但我通过使用字符串流对值进行字符串处理来解决问题。

我很好奇sprintf使用不同的本地化的情况。当sprintf使用','而不是'。'时以及如何控制它?

1 个答案:

答案 0 :(得分:8)

小数点分隔符由LC_NUMERIC语言环境变量控制。设置setlocale了解详细信息。将其设置为“C”语言环境将为您提供一段时间。您可以通过查看localeconv返回的(只读)结构来查找当前语言环境的字符和设置。