1. ホーム
  2. c++

[解決済み] 文字列配列を動的に確保し、その値を変更する?

2022-03-05 17:40:02

質問

文字列の配列を作成し、ポインタを使用してそれを変更しようとしています。文字列は長さがまちまちなので、ポインタの宣言の仕方がよくわからず、これがエラーの原因になっていると思うのですが。

私のコードは次のようなものです。

#includes <string>
#includes <iostream>
using namespace std;

string *users = NULL;
int seatNum = NULL;
cin >> seatNum;
users = new string[seatNum];
string name;
cin >> name;
users[seatNum] = name;

値を変更しようとするとWrite Access Violationが投げられます。私が読んだところでは、文字列が読み取り専用としてコンパイルされているためだそうですが、私の質問は、それを変更するにはどうすればいいのか、何をすればいいのかということです。わかりやすい解説があると助かります。

どのように解決するのですか?

割り当てられた配列の範囲を超えてメモリにアクセスしている

users = new string[seatNum];
users[seatNum] = name;

最初の要素は[0]です。最後の要素は[seatNum-1]です。