这是 SGI 标准 C++ 库的实验性快照。如果您有兴趣参与正在进行的开发工作,您应该下载它,但如果您正在寻找保证“开箱即用”的库实现,则(目前)不应下载它。
此快照包含整个标准 C++ 库:STL、iostream/locale 和数值(valarray和complex)。它不包含标准 C 库实现;它旨在与现有的 C 库互操作。
请注意,I/O 库的某些方面本质上是特定于平台的。(有关更多详细信息,请参见下文。)此库已在使用 SGI MIPSpro 7.3 编译器的 IRIX 6.x 上以及在使用 glibc 2.0 和 egcs 1.1.2 编译器的 Linux 上进行了测试。它在使用 Microsoft Visual C++ 6.0 编译器(含 Service Pack 3)的 Microsoft Windows NT 上通过了简单测试。在其他平台上编译它几乎肯定会至少需要一些工作。使用相对较新的 C++ 编译器移植到另一个版本的 Unix 不应该很难。
我们欢迎建议、补丁和错误修复。请将意见发送到 [email protected]。
g++ -I. -D__STL_USE_NEW_IOSTREAMS -g hello.cxx libCio.a或者,您可以编辑stl_config.h头文件,以便宏__STL_USE_NEW_IOSTREAMS自动定义。
此 iostream/locale 库旨在与预先存在的 C 库共存。它假设对于任何 C 库实现,都有一些方法(只是不可移植的方法)可以访问底层数据文件,以便我们能够拥有多个活动区域设置。我们在c_locale.h中定义了一个用于此功能的接口。我们的 C++ I/O 库需要对c_locale.h接口进行一些实现。我们认为,实现c_locale.h接口是将 I/O 库移植到新平台的主要工作。
我们已经为 IRIX C 库实现了 c_locale 接口(它没有包含在此处,因为它包含一些代码,由于法律原因,SGI 无法将其作为开源发布),以及用于 GNU glibc 2.x 库的接口。
此外,我们提供了 c_locale 接口的存根实现。此接口仅用于操作系统知道的命名区域设置,例如(在 IRIX 中)“de”、“es_MX”和“fr_BE”。它不用于用户定义的区域设置,也不用于经典区域设置。因此,存根实现采用任何字符串,并在用户尝试创建命名区域设置时返回失败指示。根据 C++ 标准,这完全符合标准,它甚至有用。(至少对于那些没有迫切需要国际化的人来说。)这可以作为我们还没有真正的 c_locale 实现的平台的权宜之计。
我们已经尝试将尽可能多的系统相关内容抽象到_Filebuf_base类中。目前它支持 IRIX 和 Linux;移植到其他版本的 Unix 应该很容易。还有一些针对 NT 的不完整支持;那里的问题包括文本模式下“\n”<-> CRLF 转换以及本机 Win32 系统调用的使用,尤其是针对内存映射 I/O。
(另外:C++ 标准没有说明标准流使用哪种类型的 streambuf,cin, cout, cerr等。我们的选择是:宽流,以及在非同步模式下,窄流也使用basic_filebuf。在同步模式下,窄流改为使用SGI::stdio_istreambuf或SGI::stdio_ostreambuf。这些类在头文件<stdio_streambuf>中定义,当然,它们是扩展。)
2000 年 6 月 8 日 | stdlib_20000608.tar.gz
stdlib_20000608.zip |
许多小的错误修复和兼容性补丁。更改低级区域设置 API 以改进对区域设置 "" 的处理,这表示我们应该使用与用户偏好相对应的区域设置。(主要更改在 c_locale.h 和 locale.cxx 中。)此更改可能是常见情况下性能的提升。 |
2000 年 5 月 5 日 | stdlib_20000505.tar.gz
stdlib_20000505.zip |
更改了deque以删除第三个默认模板参数的扩展,用户可以通过它控制节点大小。该扩展似乎不符合标准。 |
2000 年 4 月 18 日 | stdlib_20000418.tar.gz
stdlib_20000418.zip |
更改了basic_istream::seekg和basic_ostream::seekp以便它们符合在东京采用的库问题 136 的解决方案。(seekg应该只设置获取指针,而seekp应该只设置获取放置指针。)修复了影响字符串输出的错误,其中宽度不为零;感谢 Volker H. Simonis 提供了错误报告和补丁。更改了bitset以删除第二个模板参数的扩展。该扩展似乎不符合标准(参见库问题 94),而且它也不是很有用。 |
2000 年 4 月 14 日 | stdlib_20000414.tar.gz
stdlib_20000414.zip |
小的错误修复。感谢 Alain Miniussi 提供的补丁,以满足执行某些严格错误检查的编译器,并感谢 Boris Fomitchev 提供的 Sun 兼容性补丁。 |
2000 年 4 月 3 日 | stdlib_20000403.tar.gz
stdlib_20000403.zip |
数值 I/O 错误修复。感谢 Dave Abrahams 提供的十六进制输入补丁。 |
2000 年 3 月 28 日 | stdlib_20000328.tar.gz
stdlib_20000328.zip |
各种错误修复。感谢 Kevin Shepherd 提供的 Sun 和 Win32 补丁,以及 Dan Tsafrir 提供的 g++ 2.91 补丁。 |
2000 年 3 月 21 日 | stdlib_20000321.tar.gz
stdlib_20000321.zip |
各种错误修复,包括针对 Microsoft C++ 5.0 限制的解决方法。感谢 Jan Mikkelsen 提供的针对 Intel C++ 兼容性补丁的更改,以及 Jochen Schlick 提供的 UnixWare 7 兼容性补丁。 |
2000 年 2 月 18 日 | stdlib_20000218.tar.gz
stdlib_20000218.zip |
修复了另一个本机 Win32 API 问题;再次感谢 Kevin Shepherd。改进 list<>::reverse() 的算法,使其更小更快;感谢 John D. Valois。 |
2000 年 1 月 28 日 | stdlib_20000128.tar.gz
stdlib_20000128.zip |
修复了basic_filebuf中的内存泄漏。修复了另一个本机 Win32 API 问题;再次感谢 Kevin Shepherd 和 Boris Fomitchev。 |
2000 年 1 月 25 日 | stdlib_20000125.tar.gz
stdlib_20000125.zip |
错误修复。感谢 Kevin Shepherd 和 Boris Fomitchev 提供的补丁,这些补丁修复了 Win32 初始化问题。 |
2000 年 1 月 10 日 | stdlib_20000110.tar.gz
stdlib_20000110.zip |
此库的 Win32 版本现在使用本机 Win32 API,而不是 Unix 模拟。感谢 Kevin Shepherd 提供的补丁以支持本机 Win32 调用。 |
2000 年 1 月 7 日 | stdlib_20000107.tar.gz
stdlib_20000107.zip |
更多错误修复和兼容性改进。感谢 Jan Mikkelsen 提供的 Intel C++ 兼容性补丁。 |
1999 年 12 月 28 日 | stdlib_19991228.tar.gz
stdlib_19991228.zip |
次要错误修复。感谢 Vadim Egorov 提供的时间方面补丁。 |
1999 年 12 月 15 日 | stdlib_19991215.tar.gz
stdlib_19991215.zip |
针对 Microsoft 兼容性的更改。库现在使用 Visual C++ 6.0 SP3 通过了更完整的测试套件。 |
1999 年 12 月 10 日 | stdlib_19991210.tar.gz
stdlib_19991210.zip |
更多小的错误修复。 |
1999 年 11 月 23 日 | stdlib_19991123.tar.gz
stdlib_19991123.zip |
次要错误修复和性能改进。现在为 Microsoft C++ 和 IRIX 提供了 Makefile。 |
1999 年 10 月 14 日 | stdlib_19991014.tar.gz
stdlib_19991014.zip |
库现在可以使用 Microsoft Visual C++ 6.0(含 Service Pack 3)进行编译并通过简单测试。 |
1999 年 9 月 5 日 | stdlib_19990905.tar.gz
stdlib_19990905.zip |
库现在包含对类complex. |
1999 年 8 月 30 日 | stdlib_19990830.tar.gz
stdlib_19990830.zip |
版权所有 © 1999
硅谷图形计算机系统公司
特此授予您免费使用、复制、修改、分发和销售本软件及其文档的权利,无论用途如何,但前提是所有副本中都必须包含上述版权声明,并且版权声明和本许可声明都必须出现在支持文档中。Silicon Graphics 对本软件的适用性不做任何声明。它按“原样”提供,没有任何明示或暗示的担保。