这是一个用键盘输入、屏幕输出的例子改写为文件输入、文件读写的例子
一、我们按照下面四个步骤写一个简单的输入数据再排序输出的代码:
1、键盘输入数字
2、输出排序前的列表
3、排序
4、输出排序后的列表
int main()
{
//一、键盘输入数字
list<int> intList; //整数线性表
int temp;
while (cin >> temp) //多次循环输入temp
{
intList.push_back(temp); //把temp压入线性表,输入Ctrl+Z可以结束输入
}
//二、输出排序前的列表
cout << "排序前:";
for (int x : intList)
{
cout << x << " ";
}
cout << endl;
//三、排序
intList.sort(); //list有一个成员函数sort(),可以直接排序
//四、输出排序后的列表
cout << "排序后:";
for (int x : intList)
{
cout << x << " ";
}
}
然后运行一下:
二、创建将要读取和写入的文件
1.在代码的同级文件夹中创建一个in.txt文件
由于编码问题,我们要将文件另存为ANSI编码模式:
2.在文件里写一些数字
3.改写代码:
需要头文件#include <fstream>
int main()
{
//一、从in.txt文件读取数字,压入列表
list<int> intList;
ifstream ifs; //创建文件输入流对象
ifs.open("in.txt"); //通过open()函数打开文件
if (!ifs) //如果打开失败
{
exit(0); //退出
}
int temp;
while (ifs >> temp) //cin是流输入对象,isf也是流输入对象。当读到文件末尾时,循环自动结束
{
intList.push_back(temp); //把temp压入线性表
}
//二、输出排序前的列表
cout << "排序前:";
for (int x : intList)
{
cout << x << " ";
}
cout << endl;
//三、排序
intList.sort(); //list有一个成员函数sort(),可以直接排序
//四、输出排序后的列表到out.txt文件中
ofstream ofs; //创建一个文件流输出对象
ofs.open("out.txt"); //通过open()函数打开文件
if (!ofs) //如果打开失败
{
exit(0); //退出
}
cout << "排序后:";
for (int x : intList)
{
ofs << x << " ";
}
//五、关闭文件
ifs.close();
ofs.close();
}