C++ 对于Embarcadero C+,std::ostringstream线程是否安全+;生成器XE4?

C++ 对于Embarcadero C+,std::ostringstream线程是否安全+;生成器XE4?,c++,multithreading,exception,c++-standard-library,c++builder-xe4,C++,Multithreading,Exception,C++ Standard Library,C++builder Xe4,我有一个应用程序,当我的程序终止时抛出异常。我在头文件中有以下实用程序函数,用于将数字类型转换为std::strings,以避免代码中充斥std::ostringstream实例 namespace MyUtils { template <typename T> std::string NumericToString(const T& value) { std::string str_retval = ""; try

我有一个应用程序,当我的程序终止时抛出异常。我在头文件中有以下实用程序函数,用于将数字类型转换为
std::strings
,以避免代码中充斥
std::ostringstream
实例

namespace MyUtils {

    template <typename T>
    std::string NumericToString(const T& value)
    {
        std::string str_retval = "";
        try
        {
            std::ostringstream ost;
            ost << value;
            str_retval = ost.str();
        }
        catch (std::exception& e)
        {
            str_retval = "?";
        }
        return str_retval;
    }   
}
名称空间MyUtils{
模板
标准::字符串数字缩放(常量T和值)
{
std::string str_retval=“”;
尝试
{
std::ostringstream-ost;

ost我不确定,但您应该假设,除非标准明确指定,否则所有标准库设施都不是线程安全的。但是,我不知道这段特定代码怎么会有问题。您使用的是静态链接还是动态链接?(旧版本的C++B有一个bug,如果您使用动态RTL,ostreams有时会提供AV)。您是否在调试器中捕获过其中一个AV?(如果是这样,您可能会从堆栈跟踪中得到线索)@使用MattMcNabb静态链接。我在调试器中成功捕获了一个静态链接,但它最终深入到std::ostringstream代码中,并且在某些点上出现调试器detatch错误。我最近发现Embarcadero boost::date_time库不是线程安全的(无论如何,在它们的构建中)所以我不得不放弃使用它。但是,如果我甚至不能创建线程本地stringstream对象,我不确定我还有什么信心继续工作……当你停止在调试器中时,回顾堆栈跟踪,看看是否有任何异常。除非你能想出一些让其他人可以重复的东西,否则很难进一步调试提出问题。