0

C++ の動的メモリ割り当てと構造体に関する知識を更新していて、突然トラブルに遭遇しました。以下はコードの一部で、3 行目以降で実行が停止し、プログラムが終了します。

int n;
std::cout << "How many hotels do you want : ";
std::cin >> n;


hotel* hotels= new (nothrow) hotel[n];

for (int i= 0; i< n; i++) {
    std::cout << "Hotel " << i+1 << " name : ";
    std::cin >> hotels[i].name;
    std::cout << "Hotel " << i+1 << " rating : ";
    std::cin >> hotels[i].rating;
    std::cout << "Hotel " << i+1 << " stars : ";
    std::cin >> hotels[i].stars;
}

「ホテル」宣言は次のとおりです。

struct hotel {
    char* name;
    short int rating, stars;
};

「ホテル」の動的宣言に何か問題があると思います。どこで間違ったのですか?

4

3 に答える 3

0

http://www.cplusplus.com/reference/new/nothrow/newを使用できるようにするには、含める必要があります。nothrow

#include <new>  //std::nothrow
于 2013-08-05T13:18:18.637 に答える
0

ここでの問題は、char* name文字を格納するために構造体にメモリを割り当てる必要があることです。

C++ を使用している場合stringの代わりに使用することもできます (推奨される方法):char *

struct hotel {
    string name;
    short int rating, stars;
};
于 2013-08-05T13:16:43.097 に答える