栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c++批量读取txt文件,并按规定格式输出到txt

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c++批量读取txt文件,并按规定格式输出到txt

记录研0第一个程序任务:批量读取txt文件,并按规定格式输出到一个txt文件种。

- 一、代码`

#include
#include
#include
#include
#include
#include
#include
using namespace std;

//测试,参考自贤哥写的java的if else
//测试if自动化,输出需要用到
int read1(int num1) //定义一个read1函数,用来读取单个txt文件
{

ofstream fout("E:\data01\multi-period vaccination problem__data\result53.txt", ios::app);   //输出路径,输出接着之前行末

//这三行是之前用for循环做的,其实更快捷
//for (int num1 = 1; num1 < 136; num1++) {
//for (int num2 = 0; num2 < 9; num2++) {
//for (int num3 = 0; num3 < 9; num3++) {

char fname[200];  //定义文件名称
//打开文件
snprintf(fname, sizeof(fname), "E:\data01\multi-period vaccination problem__data\Example_%d.txt", num1);

//这里要按格式输出if 或者elseif
if(num1 == 1){
fout << "if a == " << num1 << endl;;
}
else {
fout << "elseif a == " << num1< }

//这里是之前尝试时候的错误,一个%d面要有一个整数,我复制别人复制太多了,结果折磨了一上午才改掉
//ifstream fin(“E:Projectsmulti-period vaccination problem__dataExample_%d_%d_%dt”, ios::in);
ifstream fin(fname);

//定义待会要用到的一些字符串
string filename;
string line;

string str;
string substr;

//这里定义的是特殊字符,当遇到他们的时候,这一行会有特定的输出方式
string a = “Omega”;
string b = “J”;
string c = “K”;
string d = “T”;
string e = “XY_j”;
string f = “XY_k”;
string g = “c_k”;
string h = “g_k”;
string i = “Q”;
string j = “p_nj”;
string k = “e_j”;
string l = “r_j”;
string m = “l_j”;
string n = “w_j”;
string o = “u_j”;
string p = “q_1j”;
string q = “q_2j”;

//用来判断上面定义的特殊字符是否存在的语句,这里我也不太懂,复制过来就能直接用,不需要做什么改变
string::size_type idx;

if (fin) // 开始读取文件,如果有该文件开始执行括号内容,没有的话跳到最后那个else,这里用的是笨办法,挨个判断的,是否可以用个循环呢?值得思索
{
	while (getline(fin, line)) // line中不包括每行的换行符,读去这一行的数据
	{
		idx = line.find(a);//复制过来的,咱也不知道具体功能是怎么发挥的
		if (idx != string::npos) {   //if后面那个括号就是进行判断的,如果这一行返回的不是空值,就执行括号内语句,否则跳到下一个else if
			// 当字符串中包含 "Omega=" 时输出或写入文件,下面类似
			// string.substring(26) 是截取字符串的第 26 位至结束,C 应该有类似的方法,这个是原先java的东西
			string  A = line.substr(26, 5);  //把这行要输出的东西放到A里面
			fout << "Omega=" + A + ";" << endl;//输出
		}
		else if (line.find(b) != string::npos) {
			string  B = line.substr(25, 256);
			fout << "J=" + B + ";" << endl;
			//fout << "J=" << (str.length() - 25, str.length()) << endl;
			//System.out.println("J=" + string.substring(25));
		}
		else if (line.find(c) != string::npos) {
			string  C = line.substr(24, 256);
			fout << "K=" + C + ";" << endl;
			//fout << "K=" << (str.length() - 24, str.length()) << endl;
			//System.out.println("K=" + string.substring(24));
		}
		else if (line.find(d) != string::npos) {
			string  D = line.substr(17, 256);
			fout << "T=" + D + ";" << endl;
			//fout << "T=" << (str.length() - 17, str.length()) << endl;
			//System.out.println("T=" + string.substring(17));
		}
		else if (line.find(e) != string::npos) {

			string  E = line.substr(16, 256);
			fout << "XY_j=[" + E << endl;
			//for (int i = 0; i < 10; i++) {
			//	fout << E;
			//};
			//fout << "]" << endl;
			// 这里没写完整,之后需要再改一下

			//fout << "XY_j=[" << (str.length() - 16, str.length()) <<" ]"< 

}

//主函数,用来遍历文件夹
int main() {

ofstream fout("E:\data01\multi-period vaccination problem__data\result53.txt", ios::app);

char fname[200];
int num1 = 1;
int i = 0;
//cout << "请输入从哪个文件开始汇总:" << endl;
//cin >> i;


while (i < 135) {
	snprintf(fname, sizeof(fname), "E:\data01\multi-period vaccination problem__data\Example_%d.txt", num1);

	if (num1 == i) {
	
		read1(i);

	}
	else {
		read1(num1++);
		
	}
	i++;
}

system("pause");

return 0;

}

二、感想

第一个任务算是勉勉强强结束了,代码里的东西依旧还有许多不懂得地方,或者是有些冗余啊什么的。
希望自己可以在c++的学习上更上一层楼,最起码也要完成以后科研的需要。
还有一点,在完成代码的这段时间里,深深感觉到 畏难 带来的无力感,从开始的推脱,到后来ddl的日渐逼近,以及昨天晚上和老师沟通,当把自己整个心神都沉浸在其中的时候,灵感真是刷刷刷地来呀!
就是希望在以后地学习生活中,遇到问题不要退缩,干就完了,老天总不能把你逼近绝境是吧(自我催眠地第一次,嘿嘿)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1009956.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号