如何在c ++中使用不同的ifstream模式?

时间:2009-10-23 02:47:34

标签: c++ flags ifstream

  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::
  4. ,会有所作为吗?

    谢谢

2 个答案:

答案 0 :(得分:1)

  
      
  1. 根据参考文献,如果我使用ifstream infile(“test.txt”,   ifstream :: in);它会允许输入   流上的操作。但究竟是什么   一些“输入的例子”   操作“?
  2.   

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

  
      
  1. ifstream infile(“test.txt”,ifstream :: in | ifstream :: binary);   正确的语法使用多个   标志?
  2.   

  
      
  1. 如果我将ifstream ::更改为iso ::?
  2. ,会有所作为吗?   

没有

答案 1 :(得分:0)

流操作为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。因此,两个地方都可以使用这些标记,您可以直接从iosfstream检索这些标记。