gpt4 book ai didi

c++ - Visual Studio 2015 中 _ITERATOR_DEBUG_LEVEL 0 的字符串流访问冲突

转载 作者:搜寻专家 更新时间:2023-10-31 02:12:02 24 4
gpt4 key购买 nike

我偶然发现了在 Visual Studio 2015 中以 DEBUG 模式编译的问题,其中我收到以下代码的访问冲突错误(在 Release模式下或者如果 _ITERATOR_DEBUG_LEVEL 12)。自从我在项目属性中设置 _ITERATOR_DEBUG_LEVEL=0 后,问题才浮出水面(为了简单起见,我在此处添加了 #define,这也会导致错误):

#define _ITERATOR_DEBUG_LEVEL 0

#include <iostream>
#include <string>
#include <sstream>

bool try_parse(const std::string& s, double& v)
{
std::stringstream stream;

std::locale invariant_number_locale{ std::locale{ "" }, new std::numpunct<char>() };

stream.imbue(invariant_number_locale);

stream << s;

stream >> v;

return !stream.fail();
}

int main()
{
double v;
std::string s = "123";

try_parse(s, v);

std::cout << "d = " << v << std::endl;

std::cout << "Done...";
std::getchar();

return EXIT_SUCCESS;
}

问题似乎在 stream.imbue(invariant_number_locale); 这行。

最佳答案

答案似乎是,如果您使用构面,则必须按照此线程在 Debug模式下使用 _ITERATOR_DEBUG_LEVEL=2:

https://connect.microsoft.com/VisualStudio/feedback/details/2655363

感谢@HansPassant 为我指明了正确的方向。

关于c++ - Visual Studio 2015 中 _ITERATOR_DEBUG_LEVEL 0 的字符串流访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42715101/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com