gpt4 book ai didi

c++ - C++ 标准库是如何在幕后工作的?

转载 作者:行者123 更新时间:2023-12-01 14:35:52 24 4
gpt4 key购买 nike

在过去的几天里,这个问题一直困扰着我。我想知道标准库在功能方面是如何工作的。即使查看 source code,我也无法在任何地方找到答案。由 LLVM 编译器提供,对于像我这样的初学者来说,这是一段非常复杂的代码。

我在这里主要想了解的是 C++ 标准库是如何工作的。例如,让我们以 fstream 头文件为例,它由一堆有助于写入和读取文件的函数组成。

它是如何工作的?它是否使用操作系统特定的 API(因为库是跨平台的),还是什么?而且,如果标准库可以做到这一点,我难道不应该在不调用标准 fstream 文件的情况下也能弄乱一些文件(根据我的经验,我不能这样做)吗?

如果我不是以英语为母语的人,如果我的问题不清楚,我深表歉意:请随时修改此文本以使其更清晰。

最佳答案

Does it use the OS specific API (since the library is cross platform), or what?

在某些时候,会使用操作系统特定的 API。 fstream 实现不一定直接调用操作系统函数。它可能会使用其他类,这些类调用从 C 继承的函数等,但最终调用链将导致 OS 调用。 (是的,对于中级程序员来说,细节通常过于复杂。所以,作为一个自称是初学者,你的发现并不奇怪。)

库是跨平台的,在您(C++ 程序员)端,无论平台如何,接口(interface)都是相同的。但是,它不是每个平台上的同一个库。每个平台都有自己的库,在 C++ 端公开相同的接口(interface),但使用不同的操作系统调用。 (事实上​​,同一个平台可能有多个标准库,因为库实现是由您的工具链提供的,而不是由标准委员会提供的。)

And, if the standard library can do it, aren't I supposed to be able to mess with some files as well without calling the standard fstream file (which to my experience I can't do)?

是的,您可以这样做。显然,您还不能做到,但通过一些练习和指导,您应该能够做到。标准库中的所有内容都可以在您自己的代码中重新创建。标准库(以及大多数库,就此而言)的重点是节省您的时间,而不是启用原本不可用的东西。例如,您不必为您编写的每个程序都实现文件流;它位于标准库中,因此您可以专注于项目中更有趣的方面。

关于c++ - C++ 标准库是如何在幕后工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61861026/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com