##按指定格式写文件使用stringstream
#include<iostream>
#include<sstream>
#include<fstream>
#include<string>
#include<Windows.h>
using namespace std;
int main(void) {
string name;
int age;
ofstream out;
out.open("指定格式读取.txt", ios::out | ios::trunc);
while (1) {
cout << "请输入姓名:【ctrl + z 退出】";
cin >> name;
if (cin.eof()) {
break;
}
cout << "请输入年龄:";
cin >> age;
stringstream ret;
ret << "name: " << name << "\t\t\tage:" << age << endl;
out << ret.str();
}
out.close();
system("pause");
return 0;
}
文件内容:
按照指定格式读取,因为C++没有比较优雅的方式,所以我们采用的是C语言的方式---->sscanf_s
正确代码如下:
#include<iostream>
#include<sstream>
#include<fstream>
#include<string>
#include<Windows.h>
using namespace std;
int main(void) {
char name[64];
int age;
string lien;
ifstream in;
in.open("指定格式读取.txt");
while (1) {
getline(in, lien);
if (in.eof()) {
break;
}
sscanf_s(lien.c_str(), "name:%s age:%d", name, sizeof(name), &age);
cout << "姓名:" << name << "\t\t\tage:" << age << endl;
}
in.close();
system("pause");
return 0;
}
错误的情况:
1:name age 和 tx文档不一致导致出现乱码
2:" : "与文本不一致 ![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/d2f771e1059b995ad7fc469b5b6aa8cc.png)
注意上面的问题即可正确读取了: