我正在用c ++读取文件,并且按空格分隔值,然后像这样输入
1 2
3 4
5 6
我正在检查第二部分,如果它是6,我想cout
整行。
5 6
代码示例:
ifstream f;
f.open("sample.txt");
f>>check;
if(check==6){
cout << check;
}
如何在不存储的情况下打印整行?为了清楚起见,我只想打印当前值和最后一个值。
答案 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";
}
}