我一直在寻找将字符串转换为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();
}
Run Code Online (Sandbox Code Playgroud)
我知道模板是什么,我不知道它意味着什么:
std::ios_base& (*f)(std::ios_base&)
Run Code Online (Sandbox Code Playgroud)
这里是否创建了一个新指针,为什么括号中的两个表达式彼此相邻?
它是一个指向函数的指针,该函数将a std::ios_base&作为参数,并返回一个std::ios_base&.
事实上,它是操纵者的一种形式,不带任何论据.<<这种类型的重载只是调用函数; 然后该函数在流上执行任何它喜欢的操作,返回它.因此可以通过以下方式调用您的函数:
from_string( anInt, "0A", &std::hex );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
333 次 |
| 最近记录: |