#include<bits/stdc++.h>
using namespace std;
int main(){ofstream fout("test1.txt");fout<<"已成功寫入文件!";fout.close();return 0;
}
演示:
4.1.3 11-4
Code:
#include<bits/stdc++.h>
using namespace std;
int main(){ifstream fin("test1.txt");string tmp;getline(fin,tmp);cout<<tmp;fin.close();system("pause");return 0;
}
#include<bits/stdc++.h>
#define rap(a,b) for(int a=0;a<b;++a)
using namespace std;
struct stu{int num;string stuid,name,cls;
}tmp;
ostream &operator <<(ostream &o,const stu &tmp){o<<tmp.num<<" "<<tmp.stuid<<" "<<tmp.name<<" "<<tmp.cls<<endl;return o;
}
int cmp(const stu &a,const stu &b){return a.cls>b.cls;
}
void callbyclass(vector<stu>a,vector<stu>*res){int sz=a.size();sort(a.begin(),a.end(),cmp);vector<int>clsidx; string tmp=a[0].cls;clsidx.push_back(0);rap(i,sz){if(a[i].cls!=tmp){clsidx.push_back(i);tmp=a[i].cls;}}clsidx.push_back(sz);cout<<"Class:"<<endl;rap(i,clsidx.size()-1)cout<<i+1<<" : "<<a[clsidx[i]].cls<<endl;cout<<"Please Choose Class num to call student"<<endl;int idx;cin>>idx;while(idx>clsidx.size()){cout<<"Wrong Class number, plz choose again!"<<endl;cin>>idx;}getchar();do{int t=rand()%(clsidx[idx]-clsidx[idx-1]);cout<<a[t+clsidx[idx-1]];res->push_back(a[t+clsidx[idx-1]]);}while(getchar()=='\n');
}
int main(){time_t t = time(0);ifstream fin("list.txt");vector<stu>a;while(fin>>tmp.num>>tmp.stuid>>tmp.name>>tmp.cls){a.push_back(tmp);}fin.close();srand((unsigned)time(NULL));vector<stu>res;callbyclass(a,&res);cout<<"Save by time enter 1, by your desired string enter 2.\n";int tmp;cin>>tmp;if(tmp==1){char ch[64];strftime(ch, sizeof(ch), "%Y%m%d%H%M%S.txt", localtime(&t)); ofstream fout(ch);rap(i,res.size())fout<<res[i];fout.close();}else if(tmp==2){string n;cout<<"\nPlz enter your filename:"<<endl;cin>>n;ofstream fout(n.c_str());rap(i,res.size())fout<<res[i];fout.close();}return 0;
}
演示效果如下:
4.2.2
① 必做部分: 算法思路:利用getline函數讀入每一行,每一行得到的 string.size() 即為每行字符數量,利用 strtok 分割文本得到單詞數。 Code:
#include<bits/stdc++.h>
using namespace std;
const char de[]={'"',',',' ','.','\0','!','?','-','(',')','#','/',':'};
int main(){cout<<"Please Enter filname:\n";string filename;cin>>filename;ifstream fin(filename.c_str());string line;long long linenum=0,chnum=0,wordnum=0;while(getline(fin,line)){char *tmp=new char[line.length()+1];strcpy(tmp,line.c_str());char *tmp2;tmp2=strtok(tmp,de);if(tmp2!="")wordnum++;while((tmp2=strtok(NULL,de)))wordnum++;linenum++;chnum+=line.size();}cout<<"行數:"<<linenum<<" 字符數:"<<chnum<<" 單詞數:"<<wordnum;fin.close();return 0;
}