目前國內做在大學的一個項目第一,其中在我需要去斷字的字符串,似乎很簡單但是當我運行該程序具有WeirdPuncProgram.exe: Microsoft C++ exception: std::out_of_range at memory location 0x004EF898
爲什麼我在這裏得到一個out_of_range異常?
也不能正常返回的字符串值,裏面的錯誤函數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;
}
你不檢查是否'answer.find_first_of(「 - 」);'返回一個負數,如果沒有找到匹配就會發生這種情況。使用負數索引會在下一行中造成麻煩。 –
此外,您可以調用'hyphonRemover',然後丟棄結果而不進行存儲。 – PeterT