-1

当我在网上查看一些代码时,我发现

cin>>arr[0][0]>>arr[0][1]>>arr[0][2]

我在其中放置了一行由空格分隔的三个整数值。我看到这三个用空格分隔的整数变成了arr[0][0],arr[0][1]和的值arr[0][2]

如果它们之间有多个空格,则不会造成任何麻烦。

PLZ,谁能解释我这是如何工作的?

4

2 回答 2

1

大多数重载operator>>首先消耗和丢弃所有空白字符。int它们从流中的第一个非空白字符开始解析实际值(例如 an )。

于 2013-10-24T04:50:36.953 回答
0

从流中读取几乎任何类型的输入都会首先跳过任何前导空格,除非您明确关闭该功能。您应该阅读std::basic_istream文档以获取更多信息:

提取一个可能跳过前面空格的整数值。该值存储到给定的参考值。

此函数的行为类似于FormattedInputFunction. 在构造和检查哨兵对象后,可能会跳过前导空格,然后通过调用std::num_get::get().

这同样适用于其他流输入函数,包括大多数格式说明符将在读取值之前消耗所有空白字符的scanf系列:

在尝试解析输入之前,除[c和之外的所有转换说明符n都会消耗并丢弃所有前导空白字符(好像通过调用 确定)。isspace这些消耗的字符不计入指定的最大字段宽度。

于 2013-10-24T04:54:21.607 回答