-2

这是教授的代码:

#include <iostream>
using std::cout;
using std::cin;
using std::endl;

#include<string>
#include <new>

int main()
{
    char *p;
    int index = 8;

    cout << "Input how many characters:";
    cin >> index;

    p = new char [index + 1];
    cin >> p;
    cout << "p is: " << p;
    delete [] p;
    p = NULL;
    return 0;
}

在我用数字回答“多少个字符”语句后,程序停止。

有谁知道为什么?

4

1 回答 1

10

首先你有

cin >> index;

您必须在其中输入字符数。

然后你有

cin >> p;

您必须在其中输入一些字符 - 但不超过您之前提供的数字。你这样做吗?给出另一个提示可能会有所帮助:

cout << "Input up to " << index << " characters:";
cin >> p;

我希望你的教授能在此之后解释缓冲区溢出、输入验证、异常安全,以及如何使用std::string来避免手动分配。否则,你会被灌输一些非常坏的习惯。

于 2013-09-11T16:59:34.947 回答