##按指定格式写文件使用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:" : "与文本不一致
注意上面的问题即可正确读取了: