C++文件输入输出

来源:互联网 发布:linux添加用户组命令 编辑:程序博客网 时间:2024/06/11 16:23

最近在对文件内容进行更新时,用到了C++对文件流的常用操作,感觉对文件的操作是很多C++学习者必须要面临和解决的问题。于是写下这篇博客,希望能和大家一起学习和交流。

在介绍对文件的操作之前,笔者觉得很有必要介绍一下getline函数。

1.getline函数

getline不是C库函数,而是C++库函数。它会生成一个包含一串从输入流读入的字符的字符串,直到以下情况发生会导致生成的此字符串结束:

(1)到文件结束 (2)遇到函数的定界符 (3)输入达到最大限度

getline语法:

istream &getline( char *buffer, streamsize num );   

istream &getline( char *buffer, streamsize num, char delim ); 

buffer一般为一个字符数组,streamsize参数表示的是一次读入的个数。在使用getline函数时,头文件需要包括#include<istream>,当然使用#inclide<iostream>也是可以的。

下面用一段代码来表现getline函数的强大:

#include <iostream.h>

#include<stdlib.h>

#include <iomanip.h>

#include <fstream.h>

const int N=10;

int main()
{
char str[N];
  ifstream fin;
    fin.open("data.txt");
if (!fin)
{

   cout<<"error "<<endl;
   exit(1);
}
while(fin.getline(str,sizeof(str)))
{
   cout<<str;
   cout<<endl;
}
cout<<endl;

fin.clear();
cin.get();
return 0;
}

另外加两行利用getline从输入窗口获取输入值的代码:

printf("请输入program_name:");
getline(cin,program_name);
printf("请输入src:");
getline(cin,src[5]);

2.文件输入输出

  io库类型和头文件

                                                                                                       头文件                                         类型

                                                                                                      iostream                                    istream , wistream 从流读取数据

                                                                                                                                                           iostream, wiostream 读写流  

                                                                                                                                                           ostream,  wostream向流写入数据

                                                                                                        ftream                                        ifstream , wisstream 从文件读取数据

                                                                                                                                                           ofstream , wofstream 向文件写入数据

                                                                                                                                                           fstream ,  wfstream  读写文件

2.1 .IO对象无拷贝和赋值,eg:

ofstream out1 ,out2;

out1 = out2;                            //错误,不能对流对象赋值

ofstream printf(ofstream);  //错误:不能初始化ofstream参数

out2 = printf(out2);              //错误:不能拷贝流对象


2.2 使用文件流对象

ifstream in (ifile);          //构造一个ifstream并打开给定文件

ofstream out;                //输出文件流未关联任何文件

请看下面两行代码:   

ofstream ReadInFile;

ReadInFile.open("SMIL.txt",ios::trunc);   ////ios::trunc表示在打开文件前将文件清空,由于是写入,文件不存在则创建

第一行代码定义了一个输出流ReadInFile,第二行代码打开一个SMIL.txt的文件,注意,当文件不存在的时候,会自动创建,在函数中还有另外一个参数ios::trunc,该参数表示在打开文件时对文件清空。当然,如果不想清空文件,也有对应的参数——app,该参数表示在文件末尾直接添加内容。

在对文件操作结束后,一定不要忘记将文件关闭,否则文件流不能关联到另一个文件。

ReadInFile.close();   //这行代码很重要


本文用几个简单的例子对C++的输入输出流做了简单的介绍,文中可能有考虑不全的地方,烦请读者给笔者留言评论,笔者会在第一时间处理大家的消息。








0 0
原创粉丝点击