- txt文件格式化读写(设置宽度、列对齐等)
char filename[] = “文件名.txt”
(自己新建一个文件时,自己手动在文件名后面加上.txt可能会出错)
//写入txt文件
char filename[] = "文件名.txt"
ofstream outfile;outfile.open(filename,ios::out);
outfile<<setiosflags(ios::left)<<setw(15) << "number"<<setw(15)<<"name"<<setw(15)<<"birthday"
<<setw(15)<<"gender"<<setw(15)<<"tele_number"<<setw(15)<<"address"<<endl;
for(int i=1;i<=Max;i++){
outfile <<setiosflags(ios::left)<<setw(15) << toString(i)<<setw(15)<<"name"+toString(i) <<setw(15)<<"2000-01-01"
<<setw(15)<<"female"<<setw(15)<<"tn"+toString(i) <<setw(15)<<"address"+toString(i)<<endl;
}
outfile.close();
//读取txt文件
ifstream infile(filename);
string a;
Node* node = new Node();
while(infile>>node->data.number>>node->data.name>>node->data.birthday
>>node->data.gender>>node->data.telenumber>>node->data.address)//判断是否读取完文件的全部内容
{
cout<<node->data.number<<' '<<node->data.name<<' '<<node->data.birthday<<' '
<<node->data.gender<<' '<<node->data.telenumber<<' '<<node->data.address<<endl;
}
infile.close();
- sprintf是一个很实用的工具:
2.1 将多个数字转化为字符串,不够指定位数的用0补齐
//将n转化为固定长度的字符串,不足位数的用0补齐
string toString(int n){
char str[10];
sprintf(str,"%08d",n);
return str;
}
如:
toString(111); //00000111
2.2 将数字转化为字符串(不够指定位数的用0补齐)并添加到另一个字符串(例如"name")后或者前。
char temp[255];
sprintf(temp, "name%08d\0", i); //i是数,如111、5