本次实验的目标是理解流的概念并能熟悉流类库中常用的类及成员函数用法,在此基础上熟悉 I/O 格式控制方法,掌握常用格式控制。同时能了解文件 I/O,掌握文件 I/O 基本用法 。
前三个实验是书上的习题,较为简单,一并列出
11-7:
#include<iostream>
using namespace std;
int main()
{
ios_base::fmtflags original_flags = cout.flags(); //保存格式,便于将来恢复
cout<< 812<<'|';
cout.setf(ios_base::left,ios_base::adjustfield); //对齐方式改为左对齐
cout.width(10); //输出域的宽度定为10
cout<< 813 << 815 << '/n';
cout.unsetf(ios_base::adjustfield); //清楚对齐方式的格式设置
cout.precision(2);
cout.setf(ios_base::uppercase|ios_base::scientific); //更改浮点数的格式设置
cout << 831.0 ;
cout.flags(original_flags); //恢复原来的格式
}
11-3与11-4:
#include<fstream>
using namespace std;
int main()
{
ofstream myfile("text.txt");
myfile<<"已成功写入文件";
myfile.close();
}
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
char file;
ifstream hisfile("text.txt");
while(hisfile.get(file))
cout<<file;
hisfile.close();
}
然后是两个对文件输入的应用,第一个程序是一个班级的点名系统,创建5个随机数然后通过随机数从文件中读取相应的学生
#include <algorithm>
#include <fstream>
#include <iostream>
#include <iterator>
#include <vector>
#include <string>
using namespace std;
class Student {
public:
string stu_id;
string stu_num;
string stu_name;
string stu_class;
public:
Student() {};
Student(string id, string num, string name, string _class) {
stu_id = id;
stu_num = num;
stu_name = name;
stu_class = _class;
};
};
vector<Student> STU;
void read()
{
ifstream inFile("list.txt");
if (!inFile)
cout << "打开list.txt失败!" << endl;
else
{
while (!inFile.eof())
{
Student stu;
inFile >> stu.stu_id;
inFile >> stu.stu_num;
inFile >> stu.stu_name;
inFile >> stu.stu_class;
STU.push_back(stu);
}
STU.pop_back();
}
inFile.close();
}
void write()
{
ofstream outFile("roll.txt");
vector<Student>::iterator stu_begin = STU.begin();
if (!outFile)
cout << "打开roll.txt失败!" << endl;
else
{
for (int i = 0; i<5; i++, stu_begin++)
{
outFile << stu_begin->stu_id << "\t"
<< stu_begin->stu_num << "\t"
<< stu_begin->stu_name << "\t"
<< stu_begin->stu_class << endl;
}
}
outFile.close();
}
int main()
{
read();
random_shuffle(STU.begin(), STU.end());
write();
}
然后第二个应用是对一段文字进行统计,我的统计方法是将文字存入字符串数组,然后逐一判断,并记录
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main()
{
int lineNum = 0;
int wordNum = 0;
int charNum = 0;
string fileName;
ifstream inputFile;
cout << "文件名:";
cin >> fileName;
inputFile.open(fileName.c_str());
if (!inputFile.is_open())
{
cout << "打开文件"<<fileName<<"失败!\n";
}
while (!inputFile.eof())
{
string str;
getline(inputFile, str);
for (int i = 0; i<str.length(); i++)
{
if (str[i] == ' ')
{
wordNum++;
}
}
lineNum++;
charNum += str.length();
wordNum++;
}
cout << "字符数:" << charNum << endl;
cout << "单词数:" << wordNum << endl;
cout << "行数:" << lineNum << endl;
return 0;
}
本次实验报告写的比较简略。。。因为在疯狂肝课设,那么就这样辣