用C++代码代替记事本

新人第一次发文,请多多关照。(●'◡'●)

先说说这个程序的由来吧。

上学期做了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文件)时,可能出现非常庞大的错误输出,使记事本卡顿乃至崩溃。而用该程序打开时,虽会出现乱码,但程序能迅速停止(输出的乱码量很小)。

若有错误,欢迎大佬们指正(~ ̄▽ ̄)~

猜你喜欢

转载自blog.csdn.net/qq_42600433/article/details/83660105