-1

たとえば、6つの数字のセットをシンしたいとします。ただし、ユーザーはこの形式でそれらをシンニングします。

[1 2 3 4 5 6]

[]が無視されるように、または作成した配列に配置されないように設計する方法はありますか?

1 2 3 4 5 6と入力した場合のように、すべてが正常になります。[1 2 3 4 5 6]と入力すると、明らかに問題が発生します。[]を無視するか、入力の配列に入力しないように定義する方法はありますか?

以下のimは、情報を含むオーバーロード演算子を使用しています。最初の2つの値は、2次元配列の次元です。したがって、[2 2 5 3 5 3]と入力すると、セットアップした配列のサイズである22以降の値のみが入力されます。[ ]しかし、競合しないように、これらのシンボルを処理する必要があります。これを修正するための最良の方法は何でしょうか?

friend istream& operator>>(istream& is, Array<T> &array)
{
    int rowX, colY;
    is >> rowX;
    is >> colY;

    array.create(rowX, colY);

    for(int i = 0; i<array.numRowX(); i++)
        for(int j = 0; j<array.numColY(); j++)
        {
            T data;
            is >> data;
            array.setarray(i, j, data);
        }

    return is;
}
4

1 に答える 1

3

変数を使用して、無視したい入力を読み取ることができます。単に1文字をスキップする場合は、次のように機能するはずです。

char ignoreChar;

is >> ignoreChar; // Should be a '['

// for loop goes here

is >> ignore; // Shoudl be a ']'

無視された文字が実際に期待どおりであることを確認するために、ifステートメントを追加することをお勧めします。

または、1行全体を文字列として読み取り、そこから必要な情報を抽出することもできます。これは文字列解析と呼ばれます。

于 2013-02-12T00:50:30.880 に答える