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()
它。