我正在嘗試編寫一個程序去除字符串中的標點符號。程序的輸入應該是一串包含標點符號的字符;輸出應該是刪除標點符號的字符串。我正在使用Visual Studio 2008來編譯和運行該程序。執行它時,我收到異常:「調試斷言失敗,表達式:字符串下標超出範圍。」重構一個字符串時刪除標點符號的問題
什麼 我在這裏做錯了嗎?
int main()
{
string input;
string output;
getline(cin, input);
string::size_type i = 0;
for (string::size_type ix = 0; ix != input.size(); ++ix)
{
if (!ispunct(input[ix]))
{
output[i] = input[ix];
++i;
}
}
cout << output << endl;
return 0;
}
+1:因爲我們知道循環之前的大小。我們可以重新調整輸出的大小,而不是依靠實施來重新調整輸出大小(可能需要幾次)。我不能聲稱我更喜歡它,因爲我也在我的解決方案中錯過了它:-) – 2011-03-21 17:17:16