std::ifstream::in 和 std::ios::in 有什么区别? (显然作为 C++ 中 std::ifstream 的 openmode 标志)
What is the difference between std::ifstream::in and std::ios::in? (obviously as an openmode flag for an std::ifstream in C++)
我使用 SymbolHound 在网上寻找资源来比较两者,但找不到任何东西。
在 VS13 中寻找 std::ifstream::in
的声明和定义让我找到了 basic_ifstream
。寻找 std::ios::in
会找到 basic_ios
。
好像std::ios::in
用的比较广泛
提前致谢,
汉斯
如果您查看类型,std::ifstream
是 std::basic_ifstream<char>
,std::ios
是 std::basic_ios<char>
。
那里的层次结构是:
template<
class CharT,
class Traits = std::char_traits<CharT>
> class basic_ifstream : public std::basic_istream<CharT, Traits>
即:
template<
class CharT,
class Traits = std::char_traits<CharT>
> class basic_istream : virtual public std::basic_ios<CharT, Traits>
std::ios
是 std::ifstream
的基数 class,因此 std::ifstream::in
正好是 std::ios::in
.
它们是一样的。
in
是 std::ios_base
的成员。因此,它也是 ios
、ifstream
以及从 ios_base
.
派生的所有其他内容的成员
It seems std::ios::in
is more widely used.
可能是因为这是最短的命名方式。
我使用 SymbolHound 在网上寻找资源来比较两者,但找不到任何东西。
在 VS13 中寻找 std::ifstream::in
的声明和定义让我找到了 basic_ifstream
。寻找 std::ios::in
会找到 basic_ios
。
好像std::ios::in
用的比较广泛
提前致谢,
汉斯
如果您查看类型,std::ifstream
是 std::basic_ifstream<char>
,std::ios
是 std::basic_ios<char>
。
那里的层次结构是:
template<
class CharT,
class Traits = std::char_traits<CharT>
> class basic_ifstream : public std::basic_istream<CharT, Traits>
即:
template<
class CharT,
class Traits = std::char_traits<CharT>
> class basic_istream : virtual public std::basic_ios<CharT, Traits>
std::ios
是 std::ifstream
的基数 class,因此 std::ifstream::in
正好是 std::ios::in
.
它们是一样的。
in
是 std::ios_base
的成员。因此,它也是 ios
、ifstream
以及从 ios_base
.
It seems
std::ios::in
is more widely used.
可能是因为这是最短的命名方式。