第一部分 输入与输出流 3
第一章 IO流基础 3
1.1 输入与输出 3
1.1.1 什么是输入输出流 3
1.1.2 用IO流进行文本流IO的步骤 4
1.1.3 IO流的层次 6
1.1.4 IO流类中流的概念 7
1.1.5 IO流类中的类 7
1.1.6 IO流作为框架 9
1.2 格式化输入/输出 9
1.2.1 预定义的全局流 10
1.2.2 输入输出运算符 10
1.2.3 流的格式参数 13
1.2.4 操纵符 18
1.2.5 流的本地化 22
1.2.6 有格式的输入与输出的比较 22
1.2.7 格式输入的特性 23
1.3 流状态 25
1.3.1 流状态标志 25
1.3.2 测试流状态 27
1.3.3 捕获流异常情况 29
1.3.4 复位流状态 31
1.4 文件输入与输出 32
1.4.1 创建、打开、关闭和析构文件流对象 32
1.4.2 打开方式 34
1.4.3 双向文件流 37
1.5 内存内部的输入/输出 39
1.5.1 串流内容的获取和替换 39
1.5.2 打开方式 40
1.6 非格式化的输入/输出 40
1.6.1 非格式化输入 40
1.6.2 非格式化输出 42
1.7 流的位置指针定位 42
1.7.1 获取当前流位置指针 43
1.7.2 改变流位置指针 43
1.8 流的同步 45
1.8.1 同步的方法 45
1.8.2 预定义标准流的同步 47
第二章 IO流的结构 51
2.1 流类 52
2.1.1 类的继承关系 52
2.1.2 流怎样管理流缓冲区 56
2.1.3 流的拷贝和赋值 59
2.1.4 流怎样管理locale 62
2.1.5 流、流缓冲和locales间的合作 65
2.2 流缓冲类 70
2.2.1 类继承关系 70
2.2.2 流缓冲区的概念 71
2.2.3 串流缓冲 75
2.2.4 文件流缓冲 80
2.3 字符类型和字符特性 88
2.3.1 字符表示 89
2.3.2 字符特性 92
2.3.3 字符类型 96
2.4 流的iterators和流缓冲的iterators 100
2.4.1 标准库中iterator的概念 100
2.4.2 流iterator 102
2.4.3 流缓冲iterator 109
2.5 增加的流存储空间和流回调函数 114
2.5.1 增加的流存储空间 115
2.5.2 流回调函数 116
第三章 输入/输出流的高级用法 119
3.1 用户定义类型的输入输出 119
3.1.1 插入函数和提取函数的定义 119
3.1.2 第一种插入函数和提取函数 120
3.1.3 改进 123
3.1.4 改进后的插入函数和提取函数 128
3.1.5 通用的插入函数和提取函数 142
3.1.6 简单型设计与改进型设计的对比 148
3.2 用户定义的操纵符 150
3.2.1 不带参数的操纵符 151
3.2.2 带参数的操纵符 152
3.3 流的扩展功能 165
3.3.1 流保存私有操作:iword、pword和xalloc的使用 165
3.3.2 通过派生建立新的流类 180
3.3.3 两种解决方案——iword/pword与派生的比较 192
3.4 增加流缓冲功能 193
3.4.1 从流缓冲基类派生 193
3.4.2 从具体流缓冲类派生 212
第二部分 国际化 217
第四章 国际化和本地化 217
4.1 国际化和本地化 217
4.2 文化习俗 218
4.2.1 语言 218
4.2.2 数值 218
4.2.3 货币 219
4.2.4 时间和日期 219
4.2.5 字、词的排序 220
4.2.6 消息 221
4.2.7 字符编码 221
第五章 locale 227
5.1 locale对象的建立 228
5.1.1 命名locale对象 228
5.1.2 组合式locale 229
5.1.3 全局locale对象 231
5.2 从locale对象获得facet 232
5.2.1 has_facet()函数 233
5.2.2 use_facet()函数 233
第六章 标准facet 235
6.1 与字母表和语言相关的facet 235
6.1.1 字符分类 236
6.1.2 串整理 239
6.1.3 代码转换 240
6.1.4 消息目录 244
6.2 facet的格式化和解析 244
6.2.1 数值和布尔值 245
6.2.2 货币数值 247
6.2.3 日期和时间值 251
6.3 locale中标准facet的分组 254
6.3.1 标准facet族 254
6.3.2 locale分类 258
6.3.3 图示:facet和分类 259
6.4 标准facet的高级用法 260
6.4.1 通过流间接使用facet 260
6.4.2 通过locale使用facet 261
6.4.3 独立于locale对象的facet的直接使用 262
第七章 locale的框架体系结构 265
7.1 类的层次结构 265
7.2 在locale中识别与查找facet 266
7.2.1 facet的识别 266
7.2.2 facet的查找 268
7.3 locale中facet的内存管理 272
7.3.1 facet引用计数器 273
7.3.2 locale中facet的不变性 277
第八章 用户自定义facet 279
8.1 将用户自定义的facet加入已有的facet族 279
8.2 定义新的facet族 283
第三部分 参考指南 299
1.LOCALE 299
header file<locale> 299
global functions(全局函数) 301
codecvt<internT,externT,stateT> 303
codecvt_base 308
codecvt_byname<internT,externT,stateT> 309
collate<charT> 310
collate_byname<charT> 313
ctype<charT> 314
ctype<char> 318
ctype_base 321
ctype_byname<charT> 322
locale 324
messages<charT> 329
messages_base 331
messages_byname<charT> 332
money_base 333
money_get<charT,InputIterator> 334
moneypunct<charT,Inter> 336
moneypunct_byname<charT,Inter> 340
money_put<charT,outputIterator> 342
num_get<charT,InputIterator> 344
numpunct<charT> 349
numpunct_byname<charT> 351
num_put<charT,OutputIterator> 352
time_base 355
time_get<charT,InputIterator> 356
time_get_byname<charT,InputIterator> 360
time_put<charT,OutputIterator> 361
time_put_byname<charT,OutputIterator> 363
time_base 364
tm 365
2.CHARACTER TRAITS 369
header file<string> 369
char_traits<charT> 371
char_traits<char> 371
char_traits<wchar_t> 374
3.IOSTREAMS 379
header file<iosfwd> 379
header file<iostream> 382
header file<ios> 382
header file<streambuf> 384
header file<istream> 384
header file<ostream> 385
header file<iomanip> 386
header file<sstream> 386
header file<fstream> 388
global type definitions 389
global objects 390
basic_filebuf<charT,traits> 391
basic_fstream<charT,traits> 394
basic_ifstream<charT,traits> 396
basic_ios<charT,traits> 398
basic_iostream<charT,traits> 402
basic_istream<charT,traits> 403
basic_istringstream<charT,traits,Allocator> 413
basic_ofstream<charT,traits> 414
basic_ostream<charT,traits> 416
basic_ostringstream<charT,traits,Allocator> 425
basic_streambuf<charT,traits> 427
basic_stringbuf<charT,traits,Allocator> 434
basic_string stream<charT,traits,Allocator> 437
fpos<stateT> 439
ios_base 439
manipulators 451
4.STREAM ITERATORS 453
header file<iterator> 453
istreambuf_iterator<charT,traits> 454
istream_iterator<T,charT,traits,Distance> 458
iterator<Category,T,Distance,Pointer,Reference> 460
iterator category tags 461
ostreambuf_iterator<charT,traits> 461
ostream_iterator<T,charT,traits,Distance> 463
5.OTHER I/O OPERATIONS 467
bitset<N> 467
complex<T> 468
basic_string<charT,traits,Allocator> 468
附录A 数字量与bool值的解析与抽取 471
A.1 解析数字量 472
A.2 解析bool值 473
A.3 转换说明符与长度变量修饰符 474
附录B 数字量与BOOL值的格式化 477
B.1 数字量的格式化 477
B.2 bool值的格式化 480
B.3 转换说明符、限制符与长度变量修饰符 480
附录C Strftime()转换说明符 483
附录D C stdio与C++输入输出流的对应关系 485
D.1 文件打开模式 485
D.2 流状态 486
附录E 经典IO流和标准IO流之间的差异 487
E.1 IO流类的模板化 487
E.2 分区基本类ios 488
E.3 指示错误 489
E.4 国际化IO流 490
E.5 消除_withassign类 490
E.6 消除文件描述符 491
E.7 串流:用stringstream替换strstream 491
E.8 对流缓冲器类的改变 492
E.9 次要的变换 494
附录F C与C++Locales的关系 495
F.1 C与C++Locales的类型 495
F.2 C和C++的全球Locales 496
附录G 新C++的特性与习惯用语 499
G.1 位掩码类型 499
G.2 POD—简单的旧数据 499
G.3 显式构造 500
G.4 模板说明 502
G.5 默认的模板自变量 508
G.6 显式模板自变量说明 511
G.7 typename关键词 513
G.8 动态的引用 516
G.9 函数try块 520
G.10 标准的异常情况 523
G.11数的限制 524
G.12 C++ 串 525