0

ここ初心者ごめんなさい。私は cin 関数から文字列サイズを取得しようとしており、それを使用して配列サイズを宣言しています。しかし、それは言っています:

17 行目: 'x' のメンバー 'size' の要求。これは非クラス型 'std::string long int' です。

ただし、配列がなくても問題なく動作します。

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

int main()
{
    int y;
    string x[y];
    cout << "Enter sequence" << endl;
    cin >> x[y];
    y = x.size;

    for (int i = 0; i > y; i++)
        cout x[i];

    cout << "The size of the sequence is " << x.size() << " characters." << endl;
}
4

1 に答える 1

1

まず、配列を宣言することは許可されていません。この2行のコードを見てみましょう

int y;
string x[y];

コードの 2 行目で、 の値はy何ですか? それは何でもかまいません。確かにコンパイラは知りません。配列のサイズはコンパイル時に決定する必要があります。

あなたの問題には2つの解決策があります:

  1. ポインターを使用して、配列を動的に割り当てます。

  2. std::vector を使用して、標準ライブラリに動的割り当てを任せます。

IMO、どちらもプログラマー ツール ベルトに必要なツールなので、両方を行う方法を学ぶ必要があります。また、問題を解決するために正しい方法を選択できるように、いずれかのアプローチの長所と短所を学ぶ必要があります。

最後に、表示されるエラー メッセージは、配列に というメンバーがないことを意味しますsize()。上記の解決策 1. を使用してこれを修正する場合は、自分でサイズを追跡する必要があります。

于 2012-11-29T00:24:47.223 に答える