【问题标题】:How to use different ifstream modes in c++?如何在 C++ 中使用不同的 ifstream 模式?
【发布时间】:2009-10-23 02:47:34
【问题描述】:
  1. 根据参考,如果我使用ifstream infile ( "test.txt" , ifstream::in );,它会Allow input operations on the stream. 但是“输入操作”的例子有哪些?
  2. ifstream infile ( "test.txt" , ifstream::in | ifstream::binary ); 是使用多个标志的正确语法吗?
  3. 如果我将ifstream:: 更改为iso:: 会有什么不同吗?

谢谢

【问题讨论】:

  • 我认为你的意思是 ios,而不是 iso。

标签: c++ flags ifstream


【解决方案1】:
  1. 根据参考资料,如果我使用 ifstream infile ( "test.txt" , ifstream::in );它将允许输入 流上的操作。但是什么是 “输入”的一些示例 操作”?

从文件中读取意味着输入流可以支持的所有内容。请参阅istream 成员函数。通常,您可以进行格式化(使用>>)和未格式化读取(使用read)。请记住,ifstreambasic_ifstream 模板的特化 char 类型。根据您的需要,例如读取 UTF-16 编码文件,您可能必须使用不同的专业化 (wifstream) 甚至使用特殊的语言环境(阅读 this 以了解有关语言环境的更多信息)。

  1. 是 ifstream infile ( "test.txt" , ifstream::in | ifstream::binary ); 使用多个的正确语法 旗帜?

是的。

  1. 如果我将 ifstream:: 更改为 iso:: 会有什么不同吗?

没有。

【讨论】:

    【解决方案2】:

    流操作是extraction <<insertion >>。当您执行以下假设时 file 属于 fstream 类型:

    file << 5 << 6.5 << "Hello World!"; // insertion of data (output)
    file >> x >> y >> str; // exaction of data (input)
    

    您也可以将stream 处理为binary stream。在这种情况下,它看起来并不像“stream”的数据,但它可以让您随机访问数据。在某些情况下,您不能使用二进制模式,尤其是当您的数据不像网络流那样可用时。插入和提取是流上的两个主要操作。

    ifstream 默认创建为input stream。因此,std::ios::in 在这种情况下是多余的。您正确使用了标志。

    所有流都继承自ios。因此,两个地方都可以使用标志,您可以直接从ios 或从fstream 检索它们。

    【讨论】:

      猜你喜欢
      • 2023-04-03
      • 2014-11-03
      • 2012-11-15
      • 1970-01-01
      • 1970-01-01
      • 2019-11-29
      • 2017-01-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多