对文件流按格式读写取数据,文件流的状态检查
Posted Respect@
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对文件流按格式读写取数据,文件流的状态检查相关的知识,希望对你有一定的参考价值。
这里写目录标题
文件流按格式读写取数据
使用stringstream
#include <fstream>
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
string name;
int age;
ofstream outfile;
outfile.open("user.txt", ios::out | ios::trunc);
while (1) {
cout << "请输入姓名: [ctrl+z退出] ";
cin >> name;
if (cin.eof()) { //判断文件是否结束
break;
}
cout << "请输入年龄: ";
cin >> age;
stringstream s;
s << "name:" << name << "\\t\\tage:" << age << endl;
outfile << s.str();
}
// 关闭打开的文件
outfile.close();
system("pause");
return 0;
}
按指定格式读文件
没有优雅的C++解决方案, 使用C语言的sscanf
#include <fstream>
#include <iostream>
#include <string>
#include <sstream>
#include <Windows.h>
using namespace std;
int main(void)
{
char name[32];
int age;
string line;
ifstream infile;
infile.open("user.txt");
while (1) {
getline(infile, line);
if (infile.eof()) { //判断文件是否结束
break;
}
sscanf_s(line.c_str(), "姓名:%s 年龄:%d", name, sizeof(name),&age);
cout << "姓名:" << name << "\\t\\t年龄:" << age << endl;
}
infile.close();
system("pause");
return 0;
}
文件流的状态检查
s.is_open( )
文件流是否打开成功,
s.eof( ) 流s是否结束
s.fail( )
流s的failbit或者badbit被置位时, 返回true
failbit: 出现非致命错误,可挽回, 一般是软件错误
badbit置位, 出现致命错误, 一般是硬件错误或系统底层错误, 不可挽回
s.bad( )
流s的badbit置位时, 返回true
s.good( )
流s处于有效状态时, 返回true
s.clear( )
流s的所有状态都被复位
以上是关于对文件流按格式读写取数据,文件流的状态检查的主要内容,如果未能解决你的问题,请参考以下文章