C++ Regarding ifstream.ignore()

C++ Regarding ifstream.ignore()

本文关键字:ignore ifstream Regarding C++      更新时间:2023-10-16

我想到了一些问题,并尝试在这里问。

下面是运算符重载

ifstream& operator>>(ifstream &input, Map2D &map2d)
{
    int x1,x2,y1,y2;
    //get x1 first
    input.ignore(2);
    input>>x1;
    //get y1
    input.ignore();
    input>>y1;
    //get x2
    input.ignore(4);
    input>>x2;
    //get y2
    input.ignore();
    input>>y2;
    input.ignore();
}

这是我的文本文件

Map2D, [5, 7], [3, 8]

我想到的问题是,x2 因为我的分隔符是逗号,为什么 x2 是忽略 (4) 而不是忽略 (2),我尝试忽略(2)并且数字搞砸了。 但忽略(4)是正确的1。

为什么只有空格时是 (4) 和 [

x2 refer to value 3

谢谢!!

解释

您跳过了"],[",这是四个不同的字符。

当您读取 y1 时,您仍然处于流中 y1 的位置。此位置位于右括号"]"的末尾之前,然后您必须读取逗号,空格和下一个括号"["。