zoukankan      html  css  js  c++  java
  • 标准C++之fstream

    <fstream> 和<fstream.h> 

    <fstream.h>支持ios::nocreate和ios::noreplace标记。<fstream>库不支持这些标记。然而,这篇文章讲述了如何很容易地仿制它们的功能。 

    文件的重定位 

    每一个文件对象都有一个逻辑指针以指向文件中一定的位置偏移量。你可以通过调用seekp()成员函数来指定逻辑指针到文件中的任一位置,seekp()成员函数通过指定的位置偏移量实现文件中重新定位。在下面的范例中,程序定位到第10字节的文件位置,然后调用tellp()来输出新的位置: 

    ofstream fout("parts.txt"); 
    fout.seekp(10); // move 10 bytes ahead from beginning 
    cout<<"new position: "<<fout.tellp(); // display 10 

    seekp()成员函数还有另一个赋值方式,即将文件偏移方向作为第二个变量。例如,这个函数可以从当前位置向后移动2个字节到新的位置: 

    fout.seekp(-3, ios::cur); 

    你还可以使用以下的标记指定文件位置的方向: 

    ios::beg // 文件开始的位置 
    ios::cur //当前位置,比如:ios::cur+5 
    ios::end // 文件末尾的位置 


    将读和写操作结合起来 
    <fstream>类能以<<和>>操作符来执行所有的数据类型,如std::string和std::complex。表C显示了如何使用这些操作符来执行一个结合的读和写的操作。程序打开一个文件,写入两个域,重新回到文件的起始位置,然后读取原来的域到time_t和std::string对象。 

    支持多种功能 
    <fstream>类库的另一个显著特性是能够支持wchar_t。到目前为止,我所讨论的每个类都具有能够支持包含有wchar_t数据的wchar_t等价物。然而,标准C++只支持字符型的文件名,所以这些类只能带有char *的变量,而不管它们的内容。表D显示了表A中看到的wchar_t版本。可以看到,从基于字符型的I/O到wchar_t的转换是非常的容易。 

    对于<stdio.h>,<fstream>是可行的选择 
    必须承认,<fstream>也不是绝对的完美,它也不能提供每一个程序员的所有要求。例如,习惯于文件描述符(而不是文件名)的UNIX开发人员会觉得<fstream>非常的繁琐,因为还没有将描述符转化为文件名的标准方法。同样,不支持wchar_t文件名也会在一定的环境下碰到很多障碍。然而,如果你选择<fstream>,你会觉得这是一种更加直觉,稳定,方便的方法。 

  • 相关阅读:
    苹果是如何做到快速发货的?
    亚马逊危险了!面临创业公司和科技巨头的颠覆
    We are writing to let you know we have removed your selling privileges
    亚马逊获20亿美元信用额度:有助新业务投资
    亚马逊与美国邮政合作试营快递生鲜服务
    2013下半年(11月)信息系统项目管理师考试题型分析(综合知识、案例分析、论文)
    SQL Server Profiler参数说明
    SQL2005查询所有表的大小
    SQL中EXISTS的用法和效率
    在线生成APK
  • 原文地址:https://www.cnblogs.com/bendanchenzhicheng/p/2220060.html
Copyright © 2011-2022 走看看