gpt4 book ai didi

c++ - : 'std::ios_base& (*f)(std::ios_base&))' 是什么意思

转载 作者:太空狗 更新时间:2023-10-29 20:06:18 25 4
gpt4 key购买 nike

我一直在寻找将字符串转换为 int 的最佳方法,但遇到了一个我不理解的函数:

template <class T>
bool from_string(T& t,
const std::string& s,
std::ios_base& (*f)(std::ios_base&))
{
std::istringstream iss(s);
return !(iss >> f >> t).fail();
}

我知道模板是什么,我不知道它是什么意思:

std::ios_base& (*f)(std::ios_base&)

这里是不是新建了一个指针,为什么旁边有2个括号括起来的表达式?

最佳答案

它是一个指向接受 std::ios_base& 参数的函数的指针作为参数,并返回 std::ios_base& .

事实上,它是一种不需要任何操作的机械手争论。 <<这种类型的重载只是调用函数;该函数然后在流上做任何它喜欢的事情,并返回它。因此,您的函数可以这样调用:

from_string( anInt, "0A", &std::hex );

关于c++ - : 'std::ios_base& (*f)(std::ios_base&))' 是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8445115/

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