C ++:Expression:字符串下标超出范围

时间:2013-11-22 16:45:33

标签: c++

我遇到了C ++中的错误问题。这是代码:

错误为:表达式:字符串下标超出范围

#include "stdafx.h"
#include <iostream>
#include <algorithm>
#include <string>

void removeAllchars1(std::string s)
{
  int len = strlen(s.c_str());
  std::string b;
  int len2 = strlen(b.c_str());
  for(int i = 0; i < len; ++i)
  {
    if(isdigit(*(s.c_str()+i)))
    {
      b[len2]=s[i];
      ++len2;
    }
  }
  std::cout <<"\nAfter removeAllchars1 function is:"<< *(b.c_str());
}

1 个答案:

答案 0 :(得分:2)

b[len2]=s[i];

由于len2b的长度(尽管以相当复杂的方式计算 - b.length()有什么问题?),但这超出了范围,正如错误所示。如果要将字符附加到字符串,请执行以下操作:

b += s[i];