我希望使用std::to_string
将整数类型转换为字符串,但我看到了这一段:
std::to_string
依赖std::locale
进行格式化,以及 因此,可能会从多个线程并发调用std::to_string
导致部分序列化调用。
但我在这个主题上找不到任何其他内容,谷歌没有像MSDN那样提出任何问题。如果重要的话,我正在使用Visual Studio 2013.
这个线程安全吗?如果是这样,怎么样?
答案 0 :(得分:7)
std::to_string
的行为就像调用sprintf
([string.conversions]/7)一样,sprintf
的行为取决于全局区域设置,可以通过{{1}修改(或setlocale
,内部调用std::locale::global
)。
[clocale.syn]/2中的措辞似乎暗示setlocale
是线程安全的,因为它不允许std::to_string
引入setlocale
或{{1}的数据竞争}。