ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

文件读取和友元函数

2021-12-12 20:58:00  阅读:163  来源: 互联网

标签:友元 文件 读取 quot double 访问 函数


(); 但在 Budget 类的以下声明中,另一个类的 addBudget 函数 Aux 已声明为友元:eg:class Budget{ private: static double corpBudget; double divBudget; public: Budget() { divBudget = 0; } void addBudget(double b) { divBudget += b; corpBudget += divBudget; } double getDivBudget() const { return divBudget; } static double getCorpBudget() { return corpBudget; } static void mainOffice(double); friend void Aux::addBudget (double) ; // 友元}; 注意:1.因为友元函数没有this指针,则参数要有三种情况: (1)要访问非static成员时,需要对象做参数; (2)要访问static成员或全局变量时,则不需要对象做参数; (3)如果做参数的对象是全局对象,则不需要对象做参数; 2.类中通过使用关键字friend 来修饰友元函数,但该函数并不是类的成员函数,其声明可以放在类的私有部分,也可放在共有部分。友元函数的定义在类体外实现,不需要加类限定。 3.一个类中的成员函数可以是另外一个类的友元函数,而且一个函数可以是多个类友元函数。 4.友元函数可以访问类中的私有成员和其他数据,但是访问不可直接使用数据成员,需要通过对对象进行引用。" data-link-title="在C语言中,文件操作都是由库函数,例如I/O函数,字符,字符串函数,数学函数等来完成的。 假如要读取一个txt文件,则要使用文件打开函数:fopen()用来打开一个文件,即文件指针名=fopen(文件名,使用文件方式) 其中,“文件指针名”必须是被说明为FILE 类型的指针变量,“文件名”是被打开文件的文件名。 “使用文件方式”是指文件的类型和操作要求。“文件名”是字符串常量或字符串数组。 像FILE *fopen( const char * filename, const char * mode );其中filename 是字符串,用来命名文件,访问模式 mode 的值可以是下列值中的一个: r :打开一个已有的文本文件,允许读取文件。 w :打开一个文本文件,允许写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会从文件的开头写入内容。如果文件存在,则该会被截断为零长度,重新写入。 a :打开一个文本文件,以追加模式写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会在已有的文件内容中追加内容。 r+ :打开一个文本文件,允许读写文件。 w+ :打开一个文本文件,允许读写文件。如果文件已存在,则文件会被截断为零长度,如果文件不存在,则会创建一个新文件。 a+ :打开一个文本文件,允许读写文件。如果文件不存在,则会创建一个新文件。读取会从文件的开头开始,写入则只能是追加模式。 但如果处理的是二进制文件,则需使用下面的访问模式来取代上面的访问模式: "rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b" eg:打开已有文件A.txt 即FILE * r=fopen("A.txt","r");assert(r!=NULL); 然后使用文件读写函数读取文件。其中1.字符读写函数为fgetc和fputc,2.字符串读写函数为fgets和fputs,3.格式化读写函数为fscanf和fprintf。 eg:fscanf(“r,"%s%d%s%f",a[i].name,&a[i].no,a[i].sex,&a[i].score) 最后在文件读取结束时要使用文件关闭函数:fclose()关闭文件。 eg:fclose(r); 其他的像fflush()函数是刷新文件指针,清空与输出或更新数据流参数相关的任何缓冲区。如果发生错误函数返回EOF,否则返回0 freopen()是重新打开数据流,就像先调用fclose关闭文件,然后调用fopen打开文件,成功时返回输入数据流与输入的数据流相关,失败返回NULL. C++友元函数 友元函数是一个不属于类成员的函数,但它可以访问该类的私有成员。它可以是常规的独立函数,也可以是其他类的成员。但整个类都可以声明为另一个类的友元。为了使一个函数或类成为另一个类的友元,必须由给它访问权限的类来声明。类保留了它们的朋友的 "名单",只有名字出现在列表中的外部函数或类才被授予访问权限。通过关键词friend放置在函数的原型之前,即可将函数声明为友元。 eg:friend(); 但在 Budget 类的以下声明中,另一个类的 addBudget 函数 Aux 已声明为友元:eg:class Budget{ private: static double corpBudget; double divBudget; public: Budget() { divBudget = 0; } void addBudget(double b) { divBudget += b; corpBudget += divBudget; } double getDivBudget() const { return divBudget; } static double getCorpBudget() { return corpBudget; } static void mainOffice(double); friend void Aux::addBudget (double) ; // 友元}; 注意:1.因为友元函数没有this指针,则参数要有三种情况: (1)要访问非static成员时,需要对象做参数; (2)要访问static成员或全局变量时,则不需要对象做参数; (3)如果做参数的对象是全局对象,则不需要对象做参数; 2.类中通过使用关键字friend 来修饰友元函数,但该函数并不是类的成员函数,其声明可以放在类的私有部分,也可放在共有部分。友元函数的定义在类体外实现,不需要加类限定。 3.一个类中的成员函数可以是另外一个类的友元函数,而且一个函数可以是多个类友元函数。 4.友元函数可以访问类中的私有成员和其他数据,但是访问不可直接使用数据成员,需要通过对对象进行引用。">在C语言中,文件操作都是由库函数,例如I/O函数,字符,字符串函数,数学函数等来完成的。 假如要读取一个txt文件,则要使用文件打开函数:fopen()用来打开一个文件,即文件指针名=fopen(文件名,使用文件方式) 其中,“文件指针名”必须是被说明为FILE 类型的指针变量,“文件名”是被打开文件的文件名。 “使用文件方式”是指文件的类型和操作要求。“文件名”是字符串常量或字符串数组。 像FILE *fopen( const char * filename, const char * mode );其中filename 是字符串,用来命名文件,访问模式 mode 的值可以是下列值中的一个: r :打开一个已有的文本文件,允许读取文件。 w :打开一个文本文件,允许写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会从文件的开头写入内容。如果文件存在,则该会被截断为零长度,重新写入。 a :打开一个文本文件,以追加模式写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会在已有的文件内容中追加内容。 r+ :打开一个文本文件,允许读写文件。 w+ :打开一个文本文件,允许读写文件。如果文件已存在,则文件会被截断为零长度,如果文件不存在,则会创建一个新文件。 a+ :打开一个文本文件,允许读写文件。如果文件不存在,则会创建一个新文件。读取会从文件的开头开始,写入则只能是追加模式。 但如果处理的是二进制文件,则需使用下面的访问模式来取代上面的访问模式: "rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b" eg:打开已有文件A.txt 即FILE * r=fopen("A.txt","r");assert(r!=NULL); 然后使用文件读写函数读取文件。其中1.字符读写函数为fgetc和fputc,2.字符串读写函数为fgets和fputs,3.格式化读写函数为fscanf和fprintf。 eg:fscanf(“r,"%s%d%s%f",a[i].name,&a[i].no,a[i].sex,&a[i].score) 最后在文件读取结束时要使用文件关闭函数:fclose()关闭文件。 eg:fclose(r); 其他的像fflush()函数是刷新文件指针,清空与输出或更新数据流参数相关的任何缓冲区。如果发生错误函数返回EOF,否则返回0 freopen()是重新打开数据流,就像先调用fclose关闭文件,然后调用fopen打开文件,成功时返回输入数据流与输入的数据流相关,失败返回NULL. C++友元函数 友元函数是一个不属于类成员的函数,但它可以访问该类的私有成员。它可以是常规的独立函数,也可以是其他类的成员。但整个类都可以声明为另一个类的友元。为了使一个函数或类成为另一个类的友元,必须由给它访问权限的类来声明。类保留了它们的朋友的 "名单",只有名字出现在列表中的外部函数或类才被授予访问权限。通过关键词friend放置在函数的原型之前,即可将函数声明为友元。 eg:friend(); 但在 Budget 类的以下声明中,另一个类的 addBudget 函数 Aux 已声明为友元:eg:class Budget{ private: static double corpBudget; double divBudget; public: Budget() { divBudget = 0; } void addBudget(double b) { divBudget += b; corpBudget += divBudget; } double getDivBudget() const { return divBudget; } static double getCorpBudget() { return corpBudget; } static void mainOffice(double); friend void Aux::addBudget (double) ; // 友元}; 注意:1.因为友元函数没有this指针,则参数要有三种情况: (1)要访问非static成员时,需要对象做参数; (2)要访问static成员或全局变量时,则不需要对象做参数; (3)如果做参数的对象是全局对象,则不需要对象做参数; 2.类中通过使用关键字friend 来修饰友元函数,但该函数并不是类的成员函数,其声明可以放在类的私有部分,也可放在共有部分。友元函数的定义在类体外实现,不需要加类限定。 3.一个类中的成员函数可以是另外一个类的友元函数,而且一个函数可以是多个类友元函数。 4.友元函数可以访问类中的私有成员和其他数据,但是访问不可直接使用数据成员,需要通过对对象进行引用。icon-default.png?t=LA92http://在C语言中,文件操作都是由库函数,例如I/O函数,字符,字符串函数,数学函数等来完成的。 假如要读取一个txt文件,则要使用文件打开函数:fopen()用来打开一个文件,即文件指针名=fopen(文件名,使用文件方式) 其中,“文件指针名”必须是被说明为FILE 类型的指针变量,“文件名”是被打开文件的文件名。 “使用文件方式”是指文件的类型和操作要求。“文件名”是字符串常量或字符串数组。 像FILE *fopen( const char * filename, const char * mode );其中filename 是字符串,用来命名文件,访问模式 mode 的值可以是下列值中的一个: r :打开一个已有的文本文件,允许读取文件。 w :打开一个文本文件,允许写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会从文件的开头写入内容。如果文件存在,则该会被截断为零长度,重新写入。 a :打开一个文本文件,以追加模式写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会在已有的文件内容中追加内容。 r+ :打开一个文本文件,允许读写文件。 w+ :打开一个文本文件,允许读写文件。如果文件已存在,则文件会被截断为零长度,如果文件不存在,则会创建一个新文件。 a+ :打开一个文本文件,允许读写文件。如果文件不存在,则会创建一个新文件。读取会从文件的开头开始,写入则只能是追加模式。 但如果处理的是二进制文件,则需使用下面的访问模式来取代上面的访问模式: "rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b" eg:打开已有文件A.txt 即FILE * r=fopen("A.txt","r");assert(r!=NULL); 然后使用文件读写函数读取文件。其中1.字符读写函数为fgetc和fputc,2.字符串读写函数为fgets和fputs,3.格式化读写函数为fscanf和fprintf。 eg:fscanf(“r,"%s%d%s%f",a[i].name,&a[i].no,a[i].sex,&a[i].score) 最后在文件读取结束时要使用文件关闭函数:fclose()关闭文件。 eg:fclose(r); 其他的像fflush()函数是刷新文件指针,清空与输出或更新数据流参数相关的任何缓冲区。如果发生错误函数返回EOF,否则返回0 freopen()是重新打开数据流,就像先调用fclose关闭文件,然后调用fopen打开文件,成功时返回输入数据流与输入的数据流相关,失败返回NULL. C++友元函数 友元函数是一个不属于类成员的函数,但它可以访问该类的私有成员。它可以是常规的独立函数,也可以是其他类的成员。但整个类都可以声明为另一个类的友元。为了使一个函数或类成为另一个类的友元,必须由给它访问权限的类来声明。类保留了它们的朋友的 "名单",只有名字出现在列表中的外部函数或类才被授予访问权限。通过关键词friend放置在函数的原型之前,即可将函数声明为友元。 eg:friend(); 但在 Budget 类的以下声明中,另一个类的 addBudget 函数 Aux 已声明为友元:eg:class Budget{ private: static double corpBudget; double divBudget; public: Budget() { divBudget = 0; } void addBudget(double b) { divBudget += b; corpBudget += divBudget; } double getDivBudget() const { return divBudget; } static double getCorpBudget() { return corpBudget; } static void mainOffice(double); friend void Aux::addBudget (double) ; // 友元}; 注意:1.因为友元函数没有this指针,则参数要有三种情况: (1)要访问非static成员时,需要对象做参数; (2)要访问static成员或全局变量时,则不需要对象做参数; (3)如果做参数的对象是全局对象,则不需要对象做参数; 2.类中通过使用关键字friend 来修饰友元函数,但该函数并不是类的成员函数,其声明可以放在类的私有部分,也可放在共有部分。友元函数的定义在类体外实现,不需要加类限定。 3.一个类中的成员函数可以是另外一个类的友元函数,而且一个函数可以是多个类友元函数。 4.友元函数可以访问类中的私有成员和其他数据,但是访问不可直接使用数据成员,需要通过对对象进行引用。

标签:友元,文件,读取,quot,double,访问,函数
来源: https://blog.csdn.net/Qsq_Zpy/article/details/121893229

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有