STL-标准的i/o文件和i/o流

实验目的:

练习标准的输入输出流和文件输入输出流。

实验器材:

Code blocks

实验内容:

一、练习课本第4章的例4.1-4.10。最好先把例子看懂,然后自己在不看书的情况下写出代码,然后进行调试和比对。

二、在例4.3中,回顾课堂上所讲get和getline函数的异同,并通过写代码并运行加深体会。

三、在例4.6和4.7中,试验并理解使用文件I/O流时不同的文件打开方式。

实验步骤:

测试一 :

#include

using namespace std;

int main(){

int a;

string str;

cin>>a>>str;

cout<<"a="<

cout<<"str="<

}

测试二:

#include

using namespace std;

int main(){

char szBuf[60];

cout<<"请输入一个字符串:";

int n=cin.get();//相当于是一个cin,同时也会得到一个元素的ASII码

cout<<"n="<

cin.getline(szBuf,60);//接着读一行字符,遇到结束字符"\0"停止

cout<<"szBuf2="<;

cin.get(szBuf,60);

cout<<"szBuf1="<

}

测试三:

#include

using namespace std;

int main(){

int a;

while(1){

                cout<<"请输入数据a=";

                cin>>a;

                cout<<"状态值为:"<

                if(cin.fail()){

                                cout<<"输入有错!"<

                                cin.clear();//清空状态标识符

                                cin.get();//清空流缓冲区

                }

                else {

                                cout<

                         break;

                }

}

return 0;

}

测试四:

#include

#include

using namespace std;

struct STUDENT{

char name[20];

int nGrade;

};

int main(){

                ofstream out;

                out.open("E:\\STL\\a.txt");

                STUDENT s1={"张三",90};

                STUDENT s2={"李四",100};

                STUDENT s3={"王五",100};

                out<

                out<

                out<

                out.close();

return 0;

}

测试五:

#include

#include

using namespace std;

struct STUDENT{

char name[20];

int nGrade;

};

int main(){

               ofstream out;

                out.open("E:\\STL\\a.txt",ios::out);

                STUDENT s1={"张三",90};

                STUDENT s2={"李四",100};

                STUDENT s3={"王五",100};

                out<

                out<

                out<

                out.close();

                ofstream out1;//写

                out1.open("E:\\STL\\a.txt",ios::app);

                if(!out1)

                                cout<<"文件打开错误"<

                else

                                out1<<"你好"<

return 0;

}

实验结果(附数据和图表):

一:

二:

  1. .红在前,蓝在后(先getline,后get)

不会自动输出szBuf1的,需要人为给一个回车才能输

  1. .蓝在前,红在后(先get,后getline)

自动输出szBuf2

四.

五.

实验结果分析及结论:

  1. .ofstream流在往文件写入过程中,如果没有文件,就会自动创建,而fstream则不会自动创建
  2. .cin.getline()是会读取到\0的,会导致下一行的cin.get()就不能输出
  3. .int n=cin.get()是读取输入流第一个字符的ASCII码
  4. .cin.get()是不会读取到\0的,作用2是清空流缓冲区
  5. .int rdstate(); :返回值是状态信息的特征值
  6. .cin.clear()是清空状态标识符

实验心得体会和建议:

通过实验,加深了对数据的读取方法的记忆,明白了打开文件的两种方式(一种是用open函数,一种是用构造函数)也清晰的辨别了文件输入输出的关键字,有了较深的体会。

你可能感兴趣的:(STL实验报告,算法)