C++ Primer笔记4_类的静态成员_IO库
来源:互联网 发布:健身器材 知乎 编辑:程序博客网 时间:2024/06/06 19:06
1.类的静态成员
static成员变量与函数
static成员变量:必须在类外初始化;(const或引用类型变量必须在构造函数初始化列表里初始化)
static成员函数:
不依赖于类,相当于类里的全局函数(可以由该类对象调用,也可以 类名::函数名()的形式调用)
不包含this指针,不能声明为const,声明为const表示不会改变对象,而static成员函数存在于任何对象之外。
相当于把访问范围限制在所在的类中! 注意:不能访问类中非static成员变量以及非static成员函数。
注意:虽然静态成员不属于类的某个对象,但我们仍然可以使用类的对象、引用、指针来访问静态成员。
例子:
#include <iostream>using namespace std;class A{public:A(int a):age(a){cout << n << endl;}void print()const{cout << "age: " << age << endl;//printN();Right!}static void printN(){cout << "n: " << n << endl;//cout << "age: " << age << endl;Error!}private:int age;static int n;};int A::n = 20;int main(){A a(10);a.print();a.printN();A::printN();return 0;}
2.IO库
头文件 类型
iostream istream wistream从流中读取数据
ostream wostream向流中写入数据
iostream wiostream读写流
fstream ifstream wifstream从文件中读取数据
ofstream wofstream向文件中写入数据
fstream wfstream读写文件
sstream istringstream wistringstream 从string读取数据
ostringstream wostringstream向string写入数据
stringstream wstringstream 读写string
具体见如下关系图
缓冲区:
每个输出流都管理一个缓冲区,用来保存读写的数据。导致缓冲区的刷新原因:
- 程序正常结束,作为main函数的return操作的一部分,缓冲被刷新
- 缓冲区满,刷新缓冲区
- 操作符endl可以用来显示的刷新缓冲区
- 默认情况下,写到ceer的内容都是立即刷新的
- 一个输出流可能被关联到另一个流,此时缓冲区会被刷新
cout << "scott" << endl;//输出scott和一个换行符,然后刷新缓冲区cout << "scott" << flush;//输出scott 然后刷新缓冲区cout << "scott" << ends;//输出scott和一个空字符 然后刷新缓冲区
ifstream in(s);//构造一个ifstream并打开文件ofstream out;//并未关联任何文件当fstream对象被销毁时,close会自动调用。
#include <iostream>#include <fstream>#include <string>using namespace std;int main(){string s1("in");string s2("out");string s3;ifstream in(s1);ofstream out(s2);while(getline(in, s3)){out << s3 << endl;}return 0;}
#include <iostream>#include <sstream>#include <fstream>#include <vector>using namespace std;int main(){string szFileName("in");vector<string> vecStr;string line;ifstream in(szFileName.c_str());while(getline(in, line)){cout << line << endl;vecStr.push_back(line);}cout << "=================" << endl;for(vector<string>::iterator i = vecStr.begin(); i!=vecStr.end(); ++i){cout << *i << endl;}return 0;}
- C++ Primer笔记4_类的静态成员_IO库
- 【足迹C++primer】20、类的静态成员
- c++primer之类(类的静态成员)
- c++primer 12.6 静态类成员
- C++_静态成员
- C++_静态成员
- C++_静态成员
- C++ Primer v4 类的静态成员
- C++ Primer 学习笔记(7): 静态类成员
- c++笔记4-类的静态成员
- 【C++】类的静态成员
- C++ primer 笔记:继承与静态成员
- C++_静态数据成员和静态成员函数
- C#_类的方法成员
- C#_类的属性成员
- C++:类的静态类成员
- 【C++】类的静态数据成员
- 【c++】类的静态成员函数
- jQuery源码学习笔记:jQuery.fn.init(selector,context,rootjQuery)代码详解
- NOJ [1380] 老蔡买水果 && [1180] Appreciate the Landscape
- C++Primer笔记3(第四章-数组和指针)
- 在O(1)时间删除链表结点
- 【6】自己写数据库函数库 — 存储记录
- C++ Primer笔记4_类的静态成员_IO库
- Eclipse+Tomcat+Jersey 编写 REST web service
- Valid Palindrome
- 重构改善既有代码的设计--在对象之间搬移特性
- 分析jrtplib库的内存管理类
- 深入JUnit4
- Java类的继承之this的使用方法实例
- vs2012自动调整缩进
- CSDN举办开源夏令营活动 5000元奖金激励学生参与开源