开发者

sprintf, commas and dots in C(++) (and localization?)

I am working in a project using openframeworks and I've bee开发者_开发知识库n having some problems lately when writing XMLs. I've traced down the problem to a sprintf:

It seems that under certain conditions an sprintf call may write commas instead of dots on float numbers (e.g. "2,56" instead of "2.56"). In my locale the floating numbers are represented with a ',' to separate the decimals from the units.

I am unable to reproduce this behaviour in a simple example, but I've solved the problem by stringifying the value using a stringstream.

I am curious about the circumstances of sprintf using a different localization. When sprintf uses ',' instead of '.' and how to control it?


The decimal separator is controlled by the LC_NUMERIC locale variable. Set setlocale for details. Setting it to the "C" locale will give you a period. You can find out the characters and settings for the current locale by looking in the (read-only) struct returned by localeconv.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜