-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 に答える