C++读写文件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C++读写文件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含10537字,纯文字阅读大概需要16分钟。
内容图文
![C++读写文件](/upload/InfoBanner/zyjiaocheng/1235/333deed3781847b1b3ad013b58b37b5e.jpg)
#include <iostream> #include <sstream> #include <fstream> #include <string> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> #include <io.h> usingnamespace std; string removeSuffix(string fileName) //去除文件后缀{ constchar* full_name = fileName.c_str(); constchar* mn_first = full_name; int tmp = strlen(full_name);//长度不包含‘/0‘constchar* mn_last = full_name /*+ strlen(full_name)*/; if (strrchr(full_name, ‘\\‘) != NULL)//去除路径,只留文件名 mn_first = strrchr(full_name, ‘\\‘) + 1; if (strrchr(full_name, ‘.‘) != NULL) mn_last = strrchr(full_name, ‘.‘);//获取.*后缀 fileName.assign(mn_first, mn_last); return fileName; } int main() { ifstream fin("D:\\C++study\\Scoringmodel\\AF00348.txt", ios::in);//打开文件 FILE *filepath; filepath = fopen("D:\\C++study\\Scoringmodel\\AF00348.txt", "a"); long Handle; string ss; string s; struct _finddata_t FileInfo; if ((Handle = _findfirst("D:\\C++study\\Scoringmodel\\AF00348.txt", &FileInfo)) == -1L) printf("没有找到匹配的项目\n"); else { ss=FileInfo.name;//文件名 //cout<<ss<<endl; } s=removeSuffix(ss);//去掉后缀 //cout<<s<<endl;char line[200001]={0};//按行读取数据string date = "";//表示行车日期,格式为年/月/日string time = "";//表示行车时间,格式为时/分/秒int flag;//表示车的状态,1表示车在启动中,0表示熄火int v;//表示车的速度int a;//表示车的加速度int angle;//方向角int day0=0;//日int hh0=0;//时int mm0=0;//分int ss0=0;//秒int day1=0; int hh1=0; int mm1=0; int ss1=0; int t0=0;//记录一段时间驾驶的总时间int num0=0;//记录疲劳驾驶0-1小时的次数int t1=0;//属于疲劳驾驶的总时间double grade=100.00;//每辆车的得分,初值为满分100double k0 = 0.0005 ;//表示疲劳驾驶0-1小时扣分中的系数double k13 = 0.0007;//疲劳驾驶1-2小时扣分系数double k14 = 0.0008;//疲劳驾驶2小时以上扣分系数double grade0=0;//疲劳驾驶0-1小时应扣的分值int num3=0;//加速度达到三级急加/减速标准的次数double k3 = 0.0004 ;//三级急加/减速扣分中的系数double grade3=0;//三级急加/减速应扣的分数int num2=0;//加速度达到二级急加/减速标准的次数double k2 = 0.0003 ;//二级急加/减速扣分中的系数double grade2=0;//二级急加/减速应扣的分数int num1=0;//加速度达到一级急加/减速标准的次数double k1 = 0.0002 ;//一级急加/减速扣分中的系数double grade1=0;//一级急加/减速应扣的分数int num4=0;//怠速预热的次数int t2=0;//一段时间内超长怠速的时间int mm2=0;//记录怠速开始的分int ss2=0;//记录怠速开始的秒int mm3=0;//记录怠速结束的分int ss3=0;//记录怠速结束的秒int t3=0;//总的超长怠速时间double grade4=0;//怠速预热应扣的分数double k4 = 0.0001 ;//怠速预热的系数double grade5=0;//超长怠速应扣的分数double k5 = 0.00002;//超长怠速的系数int t4=0;//一段时间内的熄火滑行时间int t5=0;//总的熄火滑行时间int mm4=0;//记录熄火滑行开始的分int mm5=0;//记录熄火滑行结束的分int ss4=0;//记录熄火滑行开始的秒int ss5=0;//记录熄火滑行结束的秒double k6 = 0.0005 ;//熄火滑行的系数double grade6=0;//熄火滑行应扣的分数int num13=0;//熄火滑行的次数int num5=0;//超速10%以内的次数double k7 = 0.0004 ;//超速10%以内的系数double grade7=0;//超速10%以内应扣的分数int num6=0;//超速10%~20%的次数double k8 = 0.0067 ;//超速10%~20%的系数double grade8=0;//超速10%~20%应扣的分数int num7=0;//超速20%~50%的次数double k9 = 0.0500 ;//超速20%~50%的系数double grade9=0;//超速20%~50%应扣的分数int num8=0;//超速50%~70%的次数double k10 = 0.0800 ;//超速50%~70%的系数double grade10=0;//超速50%~70%应扣的分数int num9=0;//超速70%以上的次数double k11 = 0.1000 ;//超速70%以上的系数double grade11=0;//超速70%以上应扣的分数double k12 = 0.8000 ;//处于夜间的系数int num10=0;//记录疲劳驾驶1-2小时的次数int num11=0;//记录疲劳驾驶2小时以上的次数double grade12=0;//疲劳驾驶1-2小时应扣的分数double grade13=0;//疲劳驾驶2小时以上应扣的分数int num12=0; //int hh;int startangle=0;//开始变道方向角int stopangle=0;//变道结束方向角int subangle=0;//角度差int num14=0;//急变道次数double k15 = 0.0003;//急变道系数double grade14=0;//急变道扣分while(fin.getline(line, sizeof(line))) { stringstream word(line);//定义字符串流 word >> date; word >> time; word >> flag; word >> v; word >> a; word >> angle; //word >> hh;/*cout << "date: " << date << endl; cout << "time: " << time << endl; cout << "flag: " << flag << endl; cout << "v: " << v << endl; cout << "a: " << a << endl; cout << "angle: "<<angle<<endl;*//*if(hh>2) num12++;*/if(flag==1&&v>0) { day0=(int)date[4];//记录一段连续行驶开始时的日期,连续行驶没有超过一个月的,不必记录年/月 hh0=(int)time[0];//记录时 mm0=(int)time[2];//记录分 ss0=(int)time[4];//记录秒 } if(flag==0) { day1=(int)date[4];//记录一段连续行驶结束时的日期,连续行驶没有超过一个月的,不必记录年/月 hh1=(int)time[0];//记录时 mm1=(int)time[2];//记录分 ss1=(int)time[4];//记录秒 } t0=(day1-day0)*24*3600+(hh1-hh0)*3600+(mm1-mm0)*60+(ss1-ss0);//一段时间内的驾驶总时间,以秒为单位if(t0>14400&t0<=18000) //即为疲劳驾驶:连续驾驶4小时以上,5小时以内 { t1+=t0; num0++;//疲劳驾驶0-1小时的次数 } elseif(t0>18000&t0<=21600) { num10++; } elseif(t0>21600) { num11++; } t0=0;//每段时间算完之后将t0置为0计算另一段if(fabs(a)>1&&fabs(a)<=2) //加速度达到三级急加/减速标准 { num3++;//次数+1 } elseif(fabs(a)>2&&fabs(a)<=3) //加速度达到二级急加/减速标准 { num2++; } elseif(fabs(a)>3&&fabs(a)<=5) //加速度达到一级急加/减速标准 { num1++; } else ; if(flag==1&&v==0) //车辆处于怠速预热开始状态 { num4++;//怠速的次数 mm2=(int)time[2]; ss2=(int)time[4]; } if(flag==1&&v>0) //怠速结束 { mm3=(int)time[2]; ss3=(int)time[4]; } t2=(mm3-mm2)*60+(ss3-ss2);//一段时间内的怠速时间,以秒为单位if(t2>180) //超长怠速 { t3+=t2; } t2=0; if(flag==0&&v>0) //熄火滑行开始状态 { num13++;//熄火滑行的次数 mm4=(int)time[2]; ss4=(int)time[4]; } if((flag==0&&v==0)||(flag==1&&v>0)) //熄火滑行已经结束 { mm5=(int)time[2]; ss5=(int)time[4]; } t4=(mm5-mm4)*60+(ss5-ss4);//一段时间的熄火滑行时间 t5+=t4;//总的熄火滑行时间 t4=0;//计算下一段前置0if(v>90&&v<=99) //超速10%以内,90为基准 { num5++; } elseif(v>99&&v<=108) //超速10%~20% { num6++; } elseif(v>108&&v<=135) //超速20%~50% { num7++; } elseif(v>135&&v<=153) //超速50%~70% { num8++; } elseif(v>153) //超速70%以上 { num9++; } if(v>80) { startangle=angle; } if(v>80) { stopangle=angle; } subangle=stopangle-startangle; if(fabs(subangle)>5) { num14++; } if((int(time[0])>=0&&int(time[0])<=6)||int(time[0])>=22&&int(time[0])<=23) { k0*=k12; k1*=k12; k2*=k12; k3*=k12; k4*=k12; k5*=k12; k6*=k12; k7*=k12; k8*=k12; k9*=k12; k10*=k12; k11*=k12; k13*=k12; k14*=k12; } } t3/=3600;//超长怠速以小时为单位 grade12=num10*k13;//疲劳驾驶1-2小时应扣的分数 grade13=num11*k14;//疲劳驾驶2小时以上应扣的分数 grade14=num14*k15;//急变道应扣去的分数 grade0=num0*k0;//疲劳驾驶0-1小时的扣分值 grade3=k3*num3;//三级急加/减速应扣的分数 grade2=num2*k2;//二级急加/减速应扣的分数 grade1=num1*k1;//一级急加/减速应扣的分数 grade4=k4*num4;//怠速预热应扣的分数 grade5=k5*t3*t3;//超长怠速应扣的分数 grade6=k6*num13;//熄火滑行应扣的分数 grade7=k7*num5;//超速10%以内应扣的分数 grade8=k8*num6;//超速10%~20%应扣的分数 grade9=num7*k9;//超速20%~50%应扣的分数 grade10=num8*k10;//超速50%~70%应扣的分数 grade11=num9*k11;//超速70%以上应扣的分数 grade=grade-grade0-grade3-grade2-grade1-grade4 -grade5-grade6-grade7-grade8-grade9-grade10-grade11-grade12-grade13-grade14;//最终得分值/*cout<<endl; cout<<endl; cout<<num3<<endl;//三级急加/减速次数 cout<<num2<<endl;//二级急加/减速次数 cout<<num1<<endl;//一级急加/减速次数 cout<<num4<<endl;//怠速预热次数 //cout<<num12<<endl; cout<<num0<<endl; cout<<num10<<endl; cout<<num11<<endl; cout<<num13<<endl; cout<<t3<<endl; cout<<num14<<endl; cout<<"疲劳驾驶0-1小时扣去的分数为:"<<grade0<<endl; cout<<"疲劳驾驶1-2小时扣去的分数为:"<<grade12<<endl; cout<<"疲劳驾驶2小时以上扣去的分数为:"<<grade13<<endl; cout<<"急变道扣去的分数为:"<<grade14<<endl; cout<<"三级急加/减速扣去的分数为:"<<grade3<<endl; cout<<"二级急加/减速扣去的分数为:"<<grade2<<endl; cout<<"一级急加/减速扣去的分数为:"<<grade1<<endl; cout<<"怠速预热扣去的分数为:"<<grade4<<endl; cout<<"超长怠速扣去的分数为:"<<grade5<<endl; cout<<"熄火滑行扣去的分数为:"<<grade6<<endl; cout<<"超速10%以内扣去的分数为:"<<grade7<<endl; cout<<"超速10%~20%扣去的分数为:"<<grade8<<endl; cout<<"超速20%~50%扣去的分数为:"<<grade9<<endl; cout<<"超速50%~70%扣去的分数为:"<<grade10<<endl; cout<<"超速70%以上扣去的分数为:"<<grade11<<endl; cout<<endl; cout<<endl;*/ cout<<"这辆车最终的总得分是:"<<grade<<endl; ofstream outfile("车辆综合得分.txt", ios::app); outfile<<s<<"车的综合得分为:"<<grade<<endl; fin.clear(); fin.close();//关闭文件,释放内存 outfile.close(); }
#include <iostream> #include <sstream> #include <fstream> #include <string> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> #include <io.h> usingnamespace std; int main() { string sheng=""; string shi=""; string xian=""; string date=""; string fensu=""; double wendu=0.0; string tianqi=""; double jiangshui=0.0; double shidu=0.0; string csheng=""; string cshi=""; string cxian=""; string cdate=""; ifstream myfile("test.txt",ios::in); char line[88888]={0}; ofstream outfile("Score.txt", ios::app); if (!myfile.is_open()) { cout << "未成功打开文件" << endl; } while(myfile.getline(line, sizeof(line))) { int fsgrade=0; int wdgrade=0; int tqgrade=0; int jsgrade=0; int sdgrade=0; stringstream word(line);//定义字符串流 word >> sheng; word >> shi; word >> xian; word >> date; word >> fensu; word >> wendu; word >> tianqi; word >> jiangshui; word >> shidu; word >> csheng; word >> cshi; word >> cxian; word >> cdate; if(fensu=="<=3") fsgrade=5; elseif(fensu[0]==‘4‘) fsgrade=4; elseif(fensu[0]==‘7‘) fsgrade=3; elseif(fensu[0]==‘1‘&&fensu[1]==‘0‘) fsgrade=2; else fsgrade=1; if(wendu>=16.00&&wendu<22.00) wdgrade=5; elseif(wendu>=8.00&&wendu<15.00) wdgrade=4; elseif(wendu>=23.00&&wendu<29.00) wdgrade=3; elseif(wendu>=0.00&&wendu<7.00) wdgrade=2; else wdgrade=1; if(tianqi[0]==‘q‘) tqgrade=5; elseif(tianqi[0]==‘y‘) tqgrade=4; elseif(tianqi[0]==‘x‘&&tianqi[1]==‘i‘&&tianqi[2]==‘a‘&&tianqi[3]==‘o‘) tqgrade=3; elseif(tianqi[0]==‘b‘) tqgrade=2; else tqgrade=1; if(jiangshui>=0&&jiangshui<7) jsgrade=5; elseif(jiangshui>=7&&jiangshui<15) jsgrade=4; elseif(jiangshui>=15&&jiangshui<23) jsgrade=3; elseif(jiangshui>=23&&jiangshui<29) jsgrade=2; else jsgrade=1; if(shidu>=0.2&&shidu<0.40) sdgrade=5; elseif(shidu>=0.4&&shidu<0.60) sdgrade=4; elseif(shidu>=0&&shidu<0.20) sdgrade=3; elseif(shidu>=0.60&&shidu<0.80) sdgrade=2; else sdgrade=1; //cout<<fsgrade<<endl; outfile << fsgrade <<""<<wdgrade<<""<<tqgrade<<""<<jsgrade<<""<<sdgrade<<endl; } myfile.close(); outfile.close(); return0; }
哈哈,其实这是当时参加第七届“泰迪杯”数据挖掘挑战赛的时候写的代码,和两位数学专业的同学参加的,我主要负责写代码。当时我们选的是C题:运输车辆安全驾驶行为的分析 ,大概意思就是在各种其他条件(如:天气、风速、温度、湿度、降水等)的变化之中,从批量数据中找出驾驶行为对行车安全、运输效率和节能情况的影响,最终,我们建立了一个得分制模型,用来描述在各种条件下,任何不当的驾驶行为会减扣相应的分数,最后根据总得分来体现不当的驾驶行为对行车安全、效率等的影响。虽然最终没能获奖,但竞赛的整个过程还是比较有意思的,值得记录一下。
原文:https://www.cnblogs.com/andrew3/p/12721527.html
内容总结
以上是互联网集市为您收集整理的C++读写文件全部内容,希望文章能够帮你解决C++读写文件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。