[英]Read from file and write to cout in one line
有什么方法可以在一行中执行这两个操作:
fscanf(fp,"%d",&n);
std::cout<<n<<std::endl;
即,我正在寻找类似的东西:
std::cout<<fscanf(fp,"%d",&n);<<std::endl;
显然&n
必须更换。 但必须使用FILE*
。
是的,可以使用,
运算符进行内联的fscanf()
调用:
#include <iostream>
int main()
{
int n = 0;
std::cout<< (fscanf(stdin,"%d",&n),n)<<std::endl;
}
在这里观看现场演示。
对于本示例,没有太多好用例,但我至少可以认为这个用例可以保存格式化可读性:
假设您有一个类型T
,提供类似void T::update();
而你懒得将对T::update()
调用包装成类似std::ostream& update(ostream&,T&)
你可以使用这个技巧:
std::array<std::array<T,4>,4> m { // A matrix of T
{ T::create() ,T::create() ,T::create() ,T::create() } ,
{ T::create() ,T::create() ,T::create() ,T::create() } ,
{ T::create() ,T::create() ,T::create() ,T::create() } ,
{ T::create() ,T::create() ,T::create() ,T::create() }
};
// ....
using u = T::update;
std::cout << "Current matrix state:\n" <<
(m[0][0].u(),m[0][0]) << ',' (m[0][1].u(),m[0][1]) << ',' (m[0][2].u(),m[0][2]) << ',' (m[0][3].u(),m[0][3]) << '\n' <<
(m[1][0].u(),m[1][0]) << ',' (m[1][1].u(),m[1][1]) << ',' (m[1][2].u(),m[1][2]) << ',' (m[1][3].u(),m[1][3]) << '\n' <<
(m[2][0].u(),m[2][0]) << ',' (m[2][1].u(),m[2][1]) << ',' (m[2][2].u(),m[2][2]) << ',' (m[2][3].u(),m[2][3]) << '\n' <<
(m[3][0].u(),m[3][0]) << ',' (m[3][1].u(),m[3][1]) << ',' (m[3][2].u(),m[3][2]) << ',' (m[3][3].u(),m[3][3]) << '\n' <<
flush;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.