cin Create Array但忽略CIN上的某些符号

时间:2013-02-12 00:45:30

标签: c++ arrays matrix cin ignore-case

比如说我希望收集一组6个数字。但是用户会以这种格式对它们进行处理。

[1 2 3 4 5 6]

有没有办法设计它以便[]被忽略或不放入我创建的数组中?

如果要输入1 2 3 4 5 6就一切都会好的。如果我输入[1 2 3 4 5 6]显然我会遇到问题。有没有办法定义[]应该被忽略甚至不输入到输入数组中?

在im下面使用重载运算符,其中包含信息。前两个值只是我的2d数组的维度。因此,如果我要输入[2 2 5 3 5 3],它将仅输入2 2之后的值,这是我设置的数组的大小。但是我需要处理这些符号[ ]所以它们不会发生冲突。解决这个问题的最佳方法是什么?

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;
}

1 个答案:

答案 0 :(得分:3)

您可以使用变量来读取要忽略的输入。如果您只是跳过单个字符,那么这样的事情应该有效:

char ignoreChar;

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

// for loop goes here

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

您可能希望添加if语句以确保忽略的字符实际上是您期望的字符。

或者,您可以将整行读作字符串,并从中提取所需的信息。这称为字符串解析。