fstream读写创建可能不存在的文件

原创 2013年12月03日 18:23:35

fstream file("b.txt", fstream::in|fstream::out|fstream::app); 


ate 并不会导致create属性,

app可造成out属性

in 表示只读属性

out表可写属性+create shuxing

in+out 表只读+可写属性(没有创建属性)


dd.out.txt:

s

{
    cout<<"---------------------------------------\n";
fstream file("dd.out.txt", fstream::out); // make dd.out.txt empty
//fstream file("dd.out.txt", fstream::out|fstream::in);
string s;
file>>s;
cout<<s;
file.close();
}




You're specifying std::fstream::in in your call to fstream::open(). This is known to force it to require an existing file.

If you look at e.g. this reference, you will see:

app     seek to the end of stream before each write 

and

ate     seek to the end of stream immediately after open 

This means that ios::app only writes at the end, but that ios::ate reads and writes at the end by default. However, with ios::ate you can seek freely in the file, but with ios::app you will alwayswrite at the end, no matter what position you set for the writing pointer.

void open (const char * filename, openmode mode);
where filename is a string of characters representing the name of the file to be opened and mode is a combination of the following flags:
ios::in Open file for reading
ios::out Open file for writing
ios::ate Initial position: end of file
ios::app Every output is appended at the end of file
ios::trunc If the file already existed it is erased
ios::binary Binary mode
These flags can be combined using bitwise operator OR: |. For example, if we want to open the file "example.bin" in binary mode to add data we could do it by the following call to function-member open:
ofstream file;
file.open ("example.bin", ios::out | ios::app | ios::binary);
All of the member functions open of classes ofstreamifstream and fstream include a default mode when opening files that varies from one to the other:
class default mode to parameter
ofstream ios::out | ios::trunc
ifstream ios::in
fstream ios::in | ios::out


//fstream file("b1.txt", fstream::in|fstream::out); do NOT create if no exist
fstream file("b1.txt", fstream::out);   // create
file<<"s";
cout<<"s";
file.close();
}


{
fstream file("b.txt", fstream::in|fstream::out|fstream::app); // create
file<<"s";
cout<<"s";
file.close();
}

使用fstream创建文件

有网上说,使用fstream file(path.c_str());语句,也就等于fstream file(path.c_str(), ios::in | ios::out);语句可以创建文件。但我发...
  • begges
  • begges
  • 2010年10月22日 10:41
  • 6657

C++ fstream文件流读写文件操作详解

在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符: 1、插入器(   向流输出数据。比如说系统有一个...
  • u012023801
  • u012023801
  • 2014年10月11日 21:13
  • 10235

C++中文件流(fstream)的使用方法及示例

C++文件流: fstream  // 文件流 ifstream  // 输入文件流 ofstream  // 输出文件流     #include //创建一个文本文...
  • seadplus
  • seadplus
  • 2012年07月30日 15:48
  • 37314

C++文件读写详解(ofstream,ifstream,fstream)

在看C++编程思想中,每个练习基本都是使用ofstream,ifstream,fstream,以前粗略知道其用法和含义,在看了几位大牛的博文后,进行整理和总结: 这里主要是讨论fstream...
  • kingstar158
  • kingstar158
  • 2011年10月10日 16:33
  • 490822

fstream、ifstream、ofstream创建新文件

关键问题1:如果文件不存在,三种流如何处理? 关键问题2:文件中已有内容,对文件读写时如何控制从何处开始? ps1: fstream头文件不包含有ifstream和ofstream,后者不是前者的子类...
  • hcf999
  • hcf999
  • 2017年09月06日 11:33
  • 193

判断文件夹、文件是否存在、创建文件 c++ matlab

Matlab: 1. exist判断当前目录是否存在指定文件夹 例子1 if ~exist('Figure')     mkdir('Figure') % 若不存在,在当前目录中产生一个子目录‘Fi...
  • qing101hua
  • qing101hua
  • 2016年10月26日 09:47
  • 3432

C++自动创建命名的txt文件以及读写txt文件

1  c++如何用在指定文件夹内新建名字有规律的txt文本文档100个? #include  #include  using namespace std; int main() {   ...
  • wordwarwordwar
  • wordwarwordwar
  • 2016年09月16日 23:08
  • 4335

ofstream的使用方法--超级精细。C++文件写入、读出函数(转)

ofstream的使用方法 ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间;   在C++中,有一个stream这个类,所有的I/O都以这个“流”类为...
  • luo809976897
  • luo809976897
  • 2016年05月18日 10:49
  • 14364

C/C++ 判断文件夹是否存在以及创建、删除文件夹 windows以及linux通用

参考: http://blog.csdn.net/tigerjibo/article/details/11712039 http://baike.baidu.com/subview/355/5900...
  • u012005313
  • u012005313
  • 2016年02月18日 20:49
  • 27230

c++创建txt文件,并写入内容

c++ 文件操作
  • mmyaoduli
  • mmyaoduli
  • 2016年04月11日 17:49
  • 11817
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:fstream读写创建可能不存在的文件
举报原因:
原因补充:

(最多只允许输入30个字)