【发布时间】:2018-12-15 16:02:44
【问题描述】:
有什么方法可以在一行中执行这两个操作:
fscanf(fp,"%d",&n);
std::cout<<n<<std::endl;
即,我正在寻找类似:std::cout<<fscanf(fp,"%d",&n);<<std::endl;
显然&n 必须被替换。不过必须使用FILE*。
【问题讨论】:
-
如果您将代码更改为使用
std::istream而不是FILE*,您可以使用cout << in.rdbuf()IIRC -
为什么一定要一行?
-
@Galik 公平点。代码高尔夫?编译器最终发出的可能与 inline 变体 完全相同。
-
@πάνταῥεῖ 当然,在硬盘上保存宝贵的字节可能很重要。源代码中的所有这些行尾加起来! ;-)
-
@Galik 当您想在以某种方式操作后输出 T 时,我更强调如何将不遵循签名
ostream& foo(ostream &, T&)的函数注入更大的输出格式序列。此类代码的可读性很重要。
标签: c++ file-handling