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>,你会觉得这是一种更加直觉,稳定,方便的方法。 

  • 相关阅读:
    poj 2229 Sumsets
    HDU- 2063 过山车
    编写一个简易购物车,实现向购物车内添加商品,移除指定商品及清空购物车功能。
    编写一个实现页面计数,要求当刷新页面时,不增加计数
    4-1:编写一个简单的留言簿,写入留言提交后显示留言内容。
    HDU-3706 Second My Problem First
    HDU-1896 Stones
    4-16 表单提交信息和获取。
    HDU-1873 看病要排队
    HDU-1509 Windows Message Queue
  • 原文地址:https://www.cnblogs.com/bendanchenzhicheng/p/2220060.html
Copyright © 2011-2022 走看看