我正在尝试编写一个程序来从字符串中删除标点符号。程序的输入应为字符串,包括标点符号。输出应为删除标点符号的字符串。我正在使用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;
}
最佳答案
您没有为output
变量设置有意义的大小,因此您正在访问不存在的元素。您需要output.push_back(input[ix]);
关于c++ - 重建字符串删除标点问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5379816/