URN Logo
UNIX Resources » Linux » China Linux Forum » C/C++编程版 » 28 » C++文件操作的问题
announcement 声明: 本页内容为中国Linux论坛的内容镜像,文章的版权以及其他所有的相关权利属于中国Linux论坛和相应文章的作者,如果转载,请注明文章来源及相关版权信息。
Resources
China Linux Forum(finished)
Linux Forum(finished)
FreeBSD China(finished)
linuxforum.net
  业界新闻与评论
  自由软件杂谈
  IT 人生
  Linux软件快递
  翻译作坊
  Linux图书与评论
  GNU Emacs/XEmacs
  Linux 中文环境和中文化
  Linux桌面与办公软件
  Linux 多媒体与娱乐版
  自由之窗Mozilla
  笔记本电脑上的Linux
  Gentoo
  Debian 一族
  网络管理技术
  Linux 安装与入门
  WEB服务器和FTP服务器
  域名服务器和邮件服务器
  Linux防火墙和代理服务器应用
  文件及打印服务器
  技术培训与认证
  Linux内核技术
  Linux 嵌入技术
  Linux设备驱动程序
  Linux 集群技术
  LINUX平台数据库
  系统和网络安全
  CPU 与 编译器
  系统计算研究所专栏
  Linux下的GUI软件开发
  C/C++编程版
  PHP 技 术
  Java&jsp技术
  Shell编程技术
  Perl 编 程
  Python 编 程
  XML/Web Service 技术
  永远的Unix
  FreeBSD世界
   
C++文件操作的问题
C++文件操作的问题 - rainhard [2005-07-28 18:41 | 900 byte(s)]
 
Re: C++文件操作的问题 - alula [2005-07-29 14:48 | 623 byte(s)]
 
fstream 文件打开测试 - rainhard [2005-07-29 16:00 | 1,871 byte(s)]
 
Re: fstream 文件打开测试 - alula [2005-07-29 17:07 | 692 byte(s)]
 
Re: fstream 文件打开测试 - z_york [2005-07-29 17:47 | 206 byte(s)]
 
Subject: C++文件操作的问题
Author: rainhard    Posted: 2005-07-28 18:41    Length: 900 byte(s)
[Original] [Print] [Top]
c++ 如果文件不存在,则新建文件,程序如下:
文件不存在时,可以创建文件,可是文件是空的,为什么呢!
顺便问问,想向文件里写若干个0,怎么方便,谢谢!
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
fstream fs;
fs.open("ttt",ios::in|ios::binary|ios::out);
// fs.close();
if(!fs.is_open())
{
fs.open("ttt",ios::out|ios::binary);
int i =0;
int j =0;
while(i++<10)
// fs.put(j);
fs.write((const char*)&j,sizeof(int));
return -1;
}
return 0;
}
[Original] [Print] [Top]
Subject: Re: C++文件操作的问题
Author: alula    Posted: 2005-07-29 14:48    Length: 623 byte(s)
[Original] [Print] [Top]
在第二次open 之前,调用fs.clear()。

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
fstream fs;
fs.open("ttt",ios::in|ios::binary|ios::out);
// fs.close();
if(!fs.is_open())
{
fs.clear();
fs.open("ttt",ios::out|ios::binary);
int i =0;
int j =0;
while(i++<10)
// fs.put(j);
fs.write((const char*)&j,sizeof(int));
return -1;
}
return 0;
}
----
温故知新
[Original] [Print] [Top]
Subject: fstream 文件打开测试
Author: rainhard    Posted: 2005-07-29 16:00    Length: 1,871 byte(s)
[Original] [Print] [Top]
谢谢alula!

为这个问题我做了些测试,结果记录如下,不正确和无知的地方请指正!

请问我看了一下资料,都没讲的很清楚,请牛哥介绍点资料,谢谢!

测试程序:
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
fstream fs;
fs.open("exist",ios::in|ios::out);//测试文件是否存在
if(!fs){
cout<<"Not exist"<<endl;
fs.clear();

fs.open("exist",ios::out);//文件不存在,则新建一个文件,并填充内容
if(!fs)
cout<<"create Error"<<endl;
fs.write("test",5);
fs.close();

// fs.open("exist",ios::app|ios::out);// open and append data to end//1
// fs.open("exist",ios::app|ios::out|ios::in); //2
//加与不加ios::in(第1种)的区别在于,加了ios::in的话,无法打开文件
fs.open("exist",ios::out|ios::in);
//打开文件读写,可以在整个文件内移动
//与加ios::app(第2种)的区别在于,加了无法打开文件
//与第1种方式的区别是:第1种添加的内容始终在文件的末尾,
//即使移动偏移到文件头,如<YD>处的操作,也无法移动到原文件的开始位置,它的开始位置在原文件的末尾

// fs.open("exist",ios::ate|ios::out);//ate has no effect
//加了ate无法打开文件
//ate方式打开文件,没有作用,与不加的结果一样

fs.seekp(ios::beg);//<YD>
}
if(!fs)
cout<<"reopen fault"<<endl;
// fs.read();
fs.write("b",3);
}

[Original] [Print] [Top]
Subject: Re: fstream 文件打开测试
Author: alula    Posted: 2005-07-29 17:07    Length: 692 byte(s)
[Original] [Print] [Top]
<the C++ standard library> 有比较详尽的说明。

并不是任意的组合都行的,有效的组合:

in ____Reads (file must exist) "r"
out ____Empties and writes (creates if necessary) "w"
out | trunc ____Empties and writes (creates if necessary) "w"
out | app ____Appends (creates if necessary) "a"
in I out ____Reads and writes; initial position is the start (file must exist) "r+"
in | out | trunc ____Empties, reads, and writes (creates if necessary) "w+"

后面的引号内表示在C语言中对应的组合

----
温故知新
[Original] [Print] [Top]
Subject: Re: fstream 文件打开测试
Author: z_york    Posted: 2005-07-29 17:47    Length: 206 byte(s)
[Original] [Print] [Top]
哈哈,用C语言直接多了,就几个标准C函数。

我看过一些源代码,发现用C++都不过是利用其面向对象的机制来架构一个framework而已,而具体的底层一点的细节,都是用C的方法去实现,比较少用到C++标准库。
----
I love David Beckham and Man.Utd. for ever.
[Original] [Print] [Top]
« Previous thread
请教一个有关ptrace的问题?
C/C++编程版
28
Next thread »
急!!求一个共享内存的程序例子!!
     

Copyright © 2007 UNIX Resources Network, All Rights Reserved.      About URN | Privacy & Legal | Help | Contact us
备案序号: 京ICP备05006143    webmaster: webmaster@unixresources.net
This page created on 2008-07-17 03:52:44, cost 0.067193031311035 ms.