C++ Primer笔记4_静态成员类_IO库
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和一个空字符 然后刷新缓冲区
注意:假设程序异常终止。输出缓冲区是不会被刷新的!
创建流对象时。我们能够提供文件名称,假设提供了文件名称。则open函数会被自己主动调用。
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笔记1_转义字符_标准库类型string_标准库类型vector
1.转义字符 一般有两种方式: \x后紧跟1个或多个十六进制数字.或\后紧跟1.2.3个八进制数字,当中数字部分是字符相应的数值. #include <iostream> using na ...
- C++ Primer笔记
C++ Primer笔记 ch2 变量和基本类型 声明 extern int i; extern int i = 3.14;//定义 左值引用(绑定零一变量初始值,别名) 不能定义引用的引用:引用必须 ...
- 静态/动态函数库设计,王明学learn
静态/动态函数库设计 Linux应用程序设计中需要的外部函数主要由函数库和系统调用来提供. 两者区别: 一.函数库分类 函数库按照链接方式可分为: 1.静态链接库 对函数库的链接是放在编译时期(com ...
- STL笔记(6)标准库:标准库中的排序算法
STL笔记(6)标准库:标准库中的排序算法 标准库:标准库中的排序算法The Standard Librarian: Sorting in the Standard Library Matthew A ...
- linux静态与动态库创建及使用实例
一,gcc基础语法: 基本语法结构:(由以下四部分组成) gcc -o 可执行文件名 依赖文件集(*.c/*.o) 依赖库文件及其头文件集(由-I或-L与-l指明) gcc 依赖文件集(*.c/*.o ...
- Effective Java 第三版——24. 优先考虑静态成员类
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...
- python学习笔记4_类和更抽象
python学习笔记4_类和更抽象 一.对象 class 对象主要有三个特性,继承.封装.多态.python的核心. 1.多态.封装.继承 多态,就算不知道变量所引用的类型,还是可以操作对象,根据类型 ...
- ArcGIS案例学习笔记_3_2_CAD数据导入建库
ArcGIS案例学习笔记_3_2_CAD数据导入建库 计划时间:第3天下午 内容:CAD数据导入,建库和管理 目的:生成地块多边形,连接属性,管理 问题:CAD存在拓扑错误,标注位置偏移 教程:pdf ...
- Java的静态成员类
Java的静态成员类: 1.静态成员类是最简单的嵌套类.最好把它看成一个普通的类,只是碰巧被声明在另一个类的内部而已,它可以访问外围类的所以成员,包括那些声明为私有的成员. 2.静态成员类是外围类的一 ...
随机推荐
- Apache James使用的方法及相关心得(转)
经过一番的辛苦努力,终于把James 配置搞定啦,好记性不如烂笔头啊,赶紧记下我的成功经过,以备以后查阅! 首先要做的就是配置域名的MX 记录啦: 先添加一条A记录: mail.abc.com 指向 ...
- python学习笔记之三:字典,当索引不好用时
字典是python中唯一内建的映射类型.字典中的值并没有特殊的顺序,但是都存储在一个特定的键(key)里.键可以是数字,字符串甚至是元组. 1. 创建和使用字典 字典可以通过下面的方式创建: phon ...
- android平台TextView使用ImageSpan画廊GIF图像
android-gif-drawable(https://github.com/koral--/android-gif-drawable/releases)开源项目---是一个蛮不错的android ...
- CodeForces 52C Circular RMQ(间隔周期段树,间隔更新,间隔总和)
转载请注明出处:http://blog.csdn.net/u012860063 题目链接:http://codeforces.com/problemset/problem/52/C You are g ...
- 数学思想方法-分布式计算-linux/unix技术基础(5)
shell命令行参数 -bash-4.2$ cat test1.sh#!/bin/shecho "$0 "echo "$1 "echo "$2 ...
- Ceph更多Mon 更多mds
1.当前状态 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdWpfbW9zcXVpdG8=/font/5a6L5L2T/fontsize/400/fill ...
- C#高性能TCP服务
C#高性能TCP服务 哎~~ 想想大部分园友应该对 "高性能" 字样更感兴趣,为了吸引眼球所以标题中一定要突出,其实我更喜欢的标题是<猴赛雷,C#编写TCP服务的花样姿势!& ...
- Directx11学习笔记【十八】 Blending混合
本文由zhangbaochong原创,转载请注明出处http://www.cnblogs.com/zhangbaochong/p/5634580.html 在d3d11中是按frame来渲染物体的,在 ...
- 查看linux系统版本号命令
一.查看内核版本号命令: 1) [root@SOR_SYS ~]# cat /proc/version Linux version 2.6.18-238.el5 (mockbuild@x86-012. ...
- WPF技术触屏上的应用系列(二): 嵌入百度地图、API调用及结合本地数据库在地图上进行自定义标点的实现
原文:WPF技术触屏上的应用系列(二): 嵌入百度地图.API调用及结合本地数据库在地图上进行自定义标点的实现 去年某客户单位要做个大屏触屏应用,要对档案资源进行展示之用.客户端是Window7操作系 ...