【发布时间】:2020-05-18 01:22:15
【问题描述】:
在过去的几天里,这个问题一直困扰着我。我想知道标准库在功能方面是如何工作的。即使通过检查 LLVM 编译器提供的source code,我也无法在任何地方找到答案,对于像我这样的初学者来说,这是一段非常复杂的代码。
我在这里主要想了解的是 C++ 标准库是如何工作的。例如,让我们以fstream 头文件为例,它由一堆有助于写入和读取文件的函数组成。
它是如何工作的?它是否使用操作系统特定的 API(因为库是跨平台的),还是什么?而且,如果标准库可以做到这一点,我难道不应该在不调用标准fstream 文件的情况下也能处理一些文件吗(根据我的经验,我不能这样做)?
如果我不是以英语为母语的人,如果我的问题不清楚,我深表歉意:请随时修改此文本以使其更清晰。
【问题讨论】:
-
标准库的接口是跨平台的。实施通常不是。是的当然是最终使用操作系统提供的设施。
-
如果您不关心您的程序是否可移植,您也可以使用操作系统提供的 API。
-
有不同的 STL 实现可用。 Visual Studio 有他们的。 GCC 有他们的,等等。通常大多数 C++ 已经可以跨平台工作,但是可以专门化代码以利用某些 OS 功能。
-
我认为这是主题。一个清晰、写得很好的编程问题,有一个技术性的、非主观的答案。投票决定重新开放。
-
您不需要使用 C++ 标准库。它只是为了让您的代码跨平台而存在。例如 - 要打开一个文件,您可以使用 std::fstream 或者您可以只调用标准库调用的操作系统特定函数(在 Windows 上,如果您使用 ASCII,则它是 CreateFileA。您甚至不需要头文件和您可以从作为 Windows 操作系统一部分的 kernel32.dll 创建链接库