为什么我在这里得到一个out_of_range异常?

时间:2016-01-19 11:24:58

标签: c++ outofrangeexception

目前正在uni进行一个项目,起初我需要对一个字符串进行去连接,看起来很简单但是当我运行该程序时它有一个错误WeirdPuncProgram.exe: Microsoft C++ exception: std::out_of_range at memory location 0x004EF898

它也没有正确返回字符串值,在函数answer()内部被更改并且连字符被删除但是一旦它出来它再次只是原始输入。

#include <iostream>
#include <string>

using namespace std;

string answer;

string hyphonRemover(string answer)
{
   string spacer = " ";
   int h;
   for (int i = 0; i < answer.length(); i++)
   {
      h = answer.find_first_of("-");
      answer.replace(h, 1, spacer);
   }
   return answer;
}


int main()
{

   cout << "Type a sentence which contains punctuation and ill remove it for you! " << endl << endl;
   getline(cin, answer);
   hyphonRemover(answer);
   cout << answer << endl;
   system("pause");
   return 0;

}

1 个答案:

答案 0 :(得分:1)

answerhyphonRemover()的每次使用都是本地变量,而不是您在上面定义的全局answer

因此该函数将仅修改其局部变量。