字符串walk在VS2005 C ++中抛出异常

时间:2012-12-04 16:38:06

标签: c++ string stl visual-studio-2005

我在Visual Studio 2005(大型遗留项目)中使用C ++。

拥有以下代码段:

bool FOO::bar(const string& input_text)
{

  string::const_iterator
        ch = input_text.begin(),
        last_ch = input_text.end();

  for( ; ch!=last_ch; ++ch )
  {  
  /////////////////////////////////////////////////////
        const char a = *ch;
  /////////////////////////////////////////////////////
  }
  return true;
}

当我在调试模式下运行此代码时,它会在const char a = *ch行崩溃并说:

foobar.exe中0x0000000140d08b20处的未处理异常:0xC0000005:访问冲突读取位置0x0000000000000000。

当我在发布模式下运行此代码时,它运行得很好。

此代码的调用如下:

CString full_filter;
full_filter.Format( "*%s*", filter_value );
foo.bar((LPCTSTR)full_filter));

我是VS2005 C ++新手,所以我现在正在查看这些内容的含义,但是由于评论部分中的问题而将其放入。

我找到了一些看似相关的C问题和答案。基于这些,我尝试为input_text定义各种值,例如从参数中删除它并将其定义为

string input_text("FOO"); 要么 string input_text = "FOO"; 要么 char[] tmp = "FOO"; string input_text = tmp;

所有人都失败了。

我还采用了上面的代码片段,并将其置于其自己的品牌打击新的VS2005项目中,它运行得很好。

因此,遗留VS2005项目中存在一些导致问题的....独特设置。知道这些设置可能是什么,或者如何将它们抽出来的任何线索?我是排名VS2005的新手。

0 个答案:

没有答案