读取文件中传递的值

时间:2018-12-21 14:22:15

标签: c++ visual-studio stream

我正在用c ++读取文件,并且按空格分隔值,然后像这样输入

1 2
3 4
5 6

我正在检查第二部分,如果它是6,我想cout整行。

5 6

代码示例:

ifstream f;
f.open("sample.txt");
f>>check;
if(check==6){
    cout << check;
}

如何在不存储的情况下打印整行?为了清楚起见,我只想打印当前值和最后一个值。

2 个答案:

答案 0 :(得分:1)

由于要比较数据,然后根据比较结果执行某些操作,因此可以避免将它们存储在某个位置。

答案 1 :(得分:1)

如果要打印整行,则必须将其存储:

struct Record
{
  int first;
  int second;
  std::istream& operator>>(std::istream& input, Record& r);
};

std::istream& operator>>(std::istream& input, Record& r)
{
  input >> r.first;
  input >> r.second;
};

//...
Record r;
while (f >> r)
{
  if (r.second == 6)
  {
    std::cout << r.first << " " << r.second << "\n";
  }
}

在上面的代码中,我使用struct对输入行进行了建模。读取并存储两个值。当第二值为6时,输出第一和第二值。

您不需要struct,但是可以使用两个变量:

int first;
int second;
while (f >> first >> second)
{
  if (second == 6)
  {
    std::cout << first << " " << second << "\n";
  }
}