比如说我希望收集一组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;
}
答案 0 :(得分:3)
您可以使用变量来读取要忽略的输入。如果您只是跳过单个字符,那么这样的事情应该有效:
char ignoreChar;
is >> ignoreChar; // Should be a '['
// for loop goes here
is >> ignore; // Shoudl be a ']'
您可能希望添加if语句以确保忽略的字符实际上是您期望的字符。
或者,您可以将整行读作字符串,并从中提取所需的信息。这称为字符串解析。