MSVCs执行std :: put

我正在使用Microsoft Visual Studio 2012,并且正在使用std::put_time ,因此我创建了以下示例:

int main()
{
    std::time_t t = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());

    std::locale::global( std::locale("en-GB") );

    std::cout << std::put_time( std::localtime( &t ), "%x" ) << std::endl;
}

这会产生以下输出:

06/25/2013

这不是我所期望的en-GB语言环境的日期格式。 我也试过:

std::cout.imbue( std::locale("en-GB") );

但是,同样的产出。 这是什么输出我应该得到这个地区,或者我在某个地方犯了一个错误?


按预期工作。 std::put_time在流的语言环境中运行,而不是全局语言环境。 在输入main之前, cout被创建并充满当前的全局语言环境。 后续更改为全局区域设置不会影响它。 你需要明确地imbue()它。

链接地址: http://www.djcxy.com/p/72289.html

上一篇: MSVCs Implementation of std::put

下一篇: C libcurl, limit download speed