我正在尝试编写一个程序来从字符串中删除标点符号。程序的输入应为字符串,包括标点符号。输出应为删除标点符号的字符串。我正在使用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/

10-11 19:10