Boost :: locale :: as日期格式标志无效

时间:2014-06-05 11:40:38

标签: boost format locale flags

以下是代码段

std::wstring aResult;

boost::locale::generator gen;
std::locale::global(gen(""));

std::wostringstream output;
output.imbue(std::locale());

boost::locale::date_time aTime(x);

output << boost::locale::as::date_short << aTime;

aResult = output.str();

问题是输出总是给出locale和

指定的日期格式
  • 为:: date_short

  • 为:: date_long

  • 为:: date_middle

始终给出相同的结果。

这可能是什么情况?

谢谢!

1 个答案:

答案 0 :(得分:2)

它可能表示您的系统没有/不完整的区域设置定义。

E.g。这个程序:

#include <boost/locale.hpp>
#include <string>

int main()
{
    std::wstring aResult;

    boost::locale::generator gen;
    std::locale::global(gen("C"));

    std::wcout.imbue(std::locale());

    boost::locale::date_time aTime;

    std::wcout << std::endl << boost::locale::as::date_full   << aTime;
    std::wcout << std::endl << boost::locale::as::date_short  << aTime;
    std::wcout << std::endl << boost::locale::as::date_medium << aTime;
}

在我的Ubuntu盒子上打印:

Thursday, June 5, 2014 3:06:27 PM
6/5/14 3:06:27 PM
Jun 5, 2014 3:06:27 PM

Live On Coliru (在Debian上运行)会打印相同的代码:

Thu Jun  5 13:07:04 2014
Thu Jun  5 13:07:04 2014
Thu Jun  5 13:07:04 2014