输入输出体系结构:

C++入门-输入和输出_打开文件

(1)、在C++的流类库中定义了四个全局流对象:cin,cout,cerr和clog

cin :标准输入流对象, 键盘为其对应的标准设备。

cout :标准输出流对象,显示器为标准设备。

cerr和clog :标准错误输出流,输出设备是显示器。为非缓冲区流,一旦错误发生立即显示。

提取运算符“>>”(stream_extraction operator)和插入运算符“<<”(stream_insertion operator),执行输入/输出操作。

  • “提取”的含义是指输入操作,可看作从流中提取一个字符序列。
  • “插入”的含义是指输出操作,可看作向流中插入一个字符序列。

(2)、标准输入/输出成员函数

输入成员函数:

(1)字符输入:     int istream::get();

(2)字符串输入:     istream&istream::get(char *,int,char=’\n’);

输出成员函数

  (3)、 输出参数字符

     ostream&ostream::put(char);

     ostream&ostream::flush();

eg:

(1)、cin>>  接受一个字符或者字符串,遇到“空格”、“TAB”、“回车”都结束 (2)、cin.get() 或者 cin.get(变量名) 接收字符        cin.get(字符数组名,接收字符数目)用来接收一行字符串,可以接收空格 (3)、cin.getline()  接受一个字符串,可以接收空格并输出 char m[20]; cin.getline(m,5); cout<<m<<endl; 输入:jkljkljkl 输出:jklj 接受5个字符到m中,其中最后一个为'\0',所以只看到4个字符输出; (4)、getline()  受一个字符串,可以接收空格并输出,需包含“#include<string>” string str; getline(cin,str); cout<<str<<endl; 

标准C++中的string类的用法总结

(3)、文件流

ifstream ifile;//只输入用 ofstream ofile;//只输出用 fstream iofile;//既输入又输出用

类ofstream, ifstream 和fstream 是分别从ostream, istream 和iostream 中引申而来的

(a)、打开文件

void open(const char* filename,int mode,int access); 

参数: filename: 要打开的文件名 mode: 要打开文件的方式 access: 打开文件的属性

打开文件的方式在类ios(是所有流式I/O类的基类)中定义,常用的值如下: ios::app: 以追加的方式打开文件 ios::ate: 文件打开后定位到文件尾,ios:app就包含有此属性 ios::binary: 以二进制方式打开文件,缺省的方式是文本方式。两种方式的区别见前文 ios::in: 文件以输入方式打开 ios::out: 文件以输出方式打开 ios::nocreate: 不建立文件,所以文件不存在时打开失败 ios::noreplace:不覆盖文件,所以打开文件时如果文件存在失败 

可以用“或”把以上属性连接起来,如ios::out|ios::binary

打开文件的属性取值是: 0:普通文件,打开访问 1:只读文件 2:隐含文件 4:系统文件

如果open函数只有文件名一个参数,则是以读/写普通文件打开.

(b)、文本文件的读写

//写文件            

#include <fstream>

fstream fout;
fout.open( "D:\\VC\\out.txt");
cout<<fout.is_open()<<endl;
if (fout.is_open())
{
fout << "Hello .\n";
fout << "Visual Studio.\n" ;
fout.close();
}

//读文件

#include <fstream>

char buffer[256];
ifstream fin;
fin.open( "D:\\VC\\out.txt");
if (!fin.is_open())
{
cout << "Error opening file"; exit (1);
}
while (!fin.eof() ) //状态标志符的验证,如果读文件到达文件末尾,返回true。
{
fin.getline (buffer,100);
cout << buffer << endl;
}

(c)、 二进制文件

必须使用read() 和write() 方法读取和写入二进制文件


#include <fstream>

char * buffer;
long size = 1024;
ifstream fin;
fin.open( "D:\\VC\\cpp.jpg",ios::binary);
buffer = new char [size];
fin.read (buffer, size);
fin.close();