m { /-6ren">
gpt4 book ai didi

c++ - 在一行中读取文件并写入 cout

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:12:29 25 4
gpt4 key购买 nike

有什么方法可以在一行中执行这两个操作:

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;
}

查看现场演示 here .


对于目前的示例,没有太多好的用例,但我认为至少有一个可以保存格式的可读性:

假设你有一个类型 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;

关于c++ - 在一行中读取文件并写入 cout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51220658/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com