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
  • 6331

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

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

用fstream创建文件

 原贴注意用fstream创建文件时,不能指定ios::in 参数,否则当文件不存在时不会自动创建 char *fileName = "C://input.txt" ;fstream fs(fileN...
  • hnulpf
  • hnulpf
  • 2009年06月13日 16:21
  • 3725

C++创建文件夹和为文件夹改名

记忆力差的孩子得勤做笔记! 最近在程序中需要创建文件夹和更改文件夹名字,这里主要用到_mkdir和 MoveFileW两个函数,好了废话不多说,直接上demo。 #include #include ...

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

C++中文件流(fstream)的使用方法及示例 C++文件流: [cpp] view plain copy fstream ...
  • haiross
  • haiross
  • 2016年06月22日 13:06
  • 3236

C++ fstream 打开两次后读写失败

昨天写自己的课设的时候遇到的问题:首先打开一个文件(这个文件名是不存在的 notexist.txt),打开失败。再打开另一个文件(这个文件名存在 readme.txt),打开成功。接着从redame....
  • sutaizi
  • sutaizi
  • 2009年12月24日 13:10
  • 3701

fstream 中判断是否成功打开文件

from: http://blog.csdn.net/zhtsuc/article/details/2938614 关于C++ fstream的一个容易使用出错的地方 关于c++ ...
  • fruitz
  • fruitz
  • 2014年11月30日 18:43
  • 2819

fstream的open方法使用——错误笔记

要从文件中读取数据,但是总是打不开文件。 反复调试查看,发现open调用失败,但是文件的目录,是自己获取的绝对目录         使用GetModuleFileName(NULL,filepat...

ofstream和ifstream 读写文件

#include using namespace std; #include void main() { char* rute="try.txt"; ofs...

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

在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符: 1、插入器(   向流输出数据。比如说系统有一个...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:fstream读写创建可能不存在的文件
举报原因:
原因补充:

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