代码之家  ›  专栏  ›  技术社区  ›  ALoopingIcon

qlocale,全局qlocale::setdefault()的作用域是什么?

  •  2
  • ALoopingIcon  · 技术社区  · 14 年前

    问题:

    • 我有一个基于qt的多平台(win,mac,*nix)应用程序,可以解析包含十进制数的ascii文件。

    • 使用各种不同的代码块来完成解析,这些代码块使用Qt字符串素材、C++ STDIN、OLD样式SCANF等等。

    • ascii文件总是以“.”(点)作为分隔的十进制(例如,在要解析的文件中,1/10在许多国家作为标准写入0.1)。

    • 在操作系统中使用该应用程序的人会遇到很多问题(例如,对于法国用户,scanf希望找到0,1作为1/10的有效文本表示,如果找到0.1,scanf会将其解析为0)

    如何确保始终忽略操作系统区域设置中有关小数点的写入方式的指示?

    假设加上

     QLocale::setDefault(QLocale(QLocale::English,QLocale::UnitedStates));
    

    足以解决所有这些问题吗? 对全局设置区域设置的可移植方法有何建议?

    1 回复  |  直到 14 年前
        1
  •  1
  •   Mike McQuaid    14 年前

    是的,这应该足够了,因为这意味着无论在何处创建QLocale,只要没有参数,它都将使用美国英语。适用范围很广(qapplication)。