C++中文件流的使用及clear()的正确用法。

C++中文件流的使用及clear()的正确用法。,第1张

恕我不能回答第一个问题,因为我从来没见过把rdbuf()的返回值打印的写法。c++primer是很多年前看的了,如果我没记错的话,书里面也没有把rdbuf()的返回值直接打印的例子吧(如果我记错了,请指出)

事实上,在我的机器上,最后一句可以打印出4.txt余下的内容。这个事实也间接回答了你第二个问题。是否需要clear() *** 作才能重用流对象取决于可能很多因素,所以有些机器上你不需要clear,有些机器上你必须clear否则会报错。

c++ primer的意思是,如果你想写出优秀的代码,可复用的代码,那么你必须写clear,否则你不知道在谁的机器上这代码可能不能运行。

你可以把你的4.txt的内容贴出来,看看在我机器上运行结果如何

ifstream 输入文件流 input file stream 用于从文件读数据(从文件读入)

ofstream 输出文件流 output file stream 用于向文件写数据(输出到文件)

举个例子

#include <iostream>

#include <fstream>

using namespace std

int main()

{

int a = 3, b = 5, c, d

fstream x ("kdjf.dat", ios::out|ios::binary)

if(x.fail())

{

cout <<" open file fail "<<endl

return -1

}

x.write((const char *)&a, sizeof(int))

x.write((const char *)&b, sizeof(int))

x.close()

x.open("kdjf.dat", ios::in)

if(x.fail())

{

cout <<" open file fail "<<endl

return -1

}

x.read((char *)&c, sizeof(int))

x.read((char *)&d, sizeof(int))

x.close()

cout<<c<<endl

cout<<d<<endl

return 0

}

#include <iostream>

#include <iomanip>

#include <fstream>

#include <string>

using namespace std

class CMen

{

public:

CMen(string name,string num,int age=0, int salary=0)

voidprint()const//这个函数可以通过将重载流 *** 作符的流变量设为cout来代替

string getStrnum()const//不改变成员的值最好为const成员函数

friend ostream&operator<<( ostream&os, CMen&man )

friend istream&operator>>( istream&is, CMen&man )

private:

string m_name//用标准库的string类型会更好

string m_num//int Strnum

int Age

int Salary

}

CMen::CMen(string name, string num, int age, int salary)

{

m_name = name

m_num = num

Age = age

Salary = salary

}

void CMen::print()const

{

cout <<endl <<"职员信息如下: " <<endl

cout <<"姓名:" <<m_name <<endl

cout <<"工号: " <<m_num <<endl

cout <<"年龄: " <<Age <<endl

cout <<"工资:" <<Salary <<endl

}

string CMen::getStrnum()const

{

return m_num

}

ostream&operator<<(ostream&os, CMen&man )

{

if (!os) return os//检查流状态

os <<man.m_name <<man.m_num <<man.Age <<endl <<man.Salary

return os

}

istream&operator>>(istream&is, CMen&man )

{

if(!is) return is//检查流的状态

is >>man.m_name>>man.m_num >>man.Age >>man.Salary

return is

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12052648.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存