7

我正在使用 Microsoft Visual Studio 2012,并且正在研究 using 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") );

但同样,输出相同。这是我应该为这个语言环境获得的输出,还是我在某个地方犯了错误?

4

1 回答 1

4

按预期工作。std::put_time在流的语言环境下工作,而不是全局语言环境。cout被创建,并充满了当前的全局语言环境,beforemain被输入。对全局语言环境的后续更改不会影响它。你需要imbue()明确的。

于 2013-07-11T02:05:37.290 回答