使用ioStream访问冲突错误

时间:2011-02-14 17:17:16

标签: c++ visual-studio-2010 iostream access-violation

我正在创建一个ioStream,然后使用在dll中重载的运算符:

  std::istrstream wStream((char *)aString,strlen(aString));
  wStream >> wValue;

aString是作为参数接收的const char *。 第二行导致此运行时错误:

  

0xC0000005:访问冲突读取位置0x00000020

但是,当我用操作符重载函数的实际代码替换第二行时,我没有错误。

请注意,我在Visual Studio 2010中构建它,并且使用Visual Studio 2005编译时,相同的代码运行时没有错误。

1 个答案:

答案 0 :(得分:1)

如果没有关于如何设置aString但是istrstream是不推荐的类的上下文,很难说清楚。您是否考虑过将istringstream作为测试来帮助缩小范围?

std::istringstream wStream(std::string(aString));
wStream >> wValue;

编辑:经过进一步考虑,这看起来很可疑,因为aString实际上是空的,并且当strstream尝试从中读取时,最终它会因访问冲突而死亡。尝试在执行字符串流操作之前打印出aString的原始指针值(类似std::cout << static_cast<void*>(aString) << std::endl;