新人第一次发文,请多多关照。(●'◡'●)
先说说这个程序的由来吧。
上学期做了C++的大作业,在其中用到了文件流(读文件和写文件),当时的读取方式是格式化读取(从一个空格读到下一空格,然后保存读到的数据),而且是对txt文档读取,我便想到能否写个程序来读取文档中的全部内容?能否读多种格式的文件?(想想也知道不可能适用于所有的格式的文档,例如word文档要解码)。
话不多说,先上代码。
#include <iostream>
#include <fstream>
#define filename_length 50 //可输入的文件名字符长度
using namespace std;
int main()
{
while (1) {
cout << "请输入文件名: ";
char a[filename_length] = { 0 };
cin.getline(a, filename_length, '\n'); //将输入读入字符数组a,读到回车时结束
system("cls");
fstream file(a, ifstream::in);
if (file) { //判断文件是否存在
char b;
cout << a << "中的内容:"<<endl;
while (!file.eof()) { //eof最好在get后判断该次get是否读到文件末尾
b = file.get();
cout << b;
}
}
else cout << "文件不存在"<<endl;
file.close();
system("pause");
system("cls");
}
return 0;
}
这串代码编译生成exe文件后,就可以通过exe文件运行啦( ̄︶ ̄)↗
使用注意:
1. 运行时要输入文件的全名(包括后缀)才能读取,当生成的exe应用程序与要访问的文档不在同一目录下时,要输入文档的完整路径(如C:\Users\xxx\Desktop),若文件名错误,则可重新输入
2. 该程序只能正常打开记事本能正常打开的文件,现发现的能正常打开的文件种类有:.txt、.bat、.cpp、.m(Matlab脚本文件)
该程序的优点是不用打开默认应用来查看内容(cpp和m文件打开软件较慢)(也可切换打开方式,用记事本打开,只是操作麻烦点),而缺点是要输入文件名(对于同路径、文件名简单的文档打开较方便)(不同路径时可以通过移动exe文件达到同路径)
刚刚发现了的一个优点,用记事本打开一些不能正常读取的文件(如 .big / .png文件)时,可能出现非常庞大的错误输出,使记事本卡顿乃至崩溃。而用该程序打开时,虽会出现乱码,但程序能迅速停止(输出的乱码量很小)。
若有错误,欢迎大佬们指正(~ ̄▽ ̄)~