我正在创建ioStream,然后使用dll中重载的运算符:
std::istrstream wStream((char *)aString,strlen(aString));
wStream >> wValue;
aString是作为参数接收的const char *。
第二行导致此运行时错误:
0xC0000005:访问冲突读取位置0x00000020
但是,当我用运算符重载函数的实际代码替换第二行时,没有任何错误。
请注意,我正在Visual Studio 2010中构建它,并且使用Visual Studio 2005编译时,相同的代码运行没有错误。
最佳答案
没有上下文很难讲述aString
的设置方式,但是istrstream
是已弃用的类。您是否考虑过尝试使用istringstream
来缩小范围?
std::istringstream wStream(std::string(aString));
wStream >> wValue;
编辑:经过进一步考虑,这看起来很可疑,您的
aString
实际上为空,并且随着strstream
尝试从中读取,最终它死于访问冲突。尝试在执行字符串流操作之前打印出aString
的原始指针值(类似于std::cout << static_cast<void*>(aString) << std::endl;
)关于c++ - ioStream访问冲突错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4995079/