C ++ Stdlib IO实现细节

时间:2011-05-24 14:59:47

标签: c++ io implementation std

  1. 是否可以保证C ++ std IO可以在所有桌面和移动操作系统中移植(我对iOS和Android感兴趣)?
  2. std IO的实现在各个平台上是不同的,还是相当统一的?如果它不同,那么它是否会因平台的SDK而发生(换句话说 - SDK会提供那些不同的实现)吗?
  3. 谁提供这些实施?谁是作者?有人更新了吗?
  4. 文件在哪里?

4 个答案:

答案 0 :(得分:3)

  

有没有C ++标准的保证   IO可以在所有桌面上移植   和移动操作系统(我对iOS很感兴趣   和Android)?

不,无法保证这些平台能够在所有标准库中正确实现。

  

std IO的实现是否不同   跨越平台或者更确切地说   制服?如果它不同,那么   它是由于平台的SDK而发生的   (换句话说 - 做SDK提供   那些不同的实现)?

这是不同的。不同平台上的I / O非常不同。

  

谁提供这些实施?谁   是作者吗?有人更新吗?   他们?文档在哪里?

编译器实现者或平台所有者提供它们。 C ++标准描述了库必须做的事情。

答案 1 :(得分:3)

我认为你没有看到标准库的强大功能。它们旨在提供可在任何符合标准的编译器中使用的通用功能集。例如,如果我编写以下代码:

#include <iostream>

int main(int a, char** s)
{
  std::cout << "Hello World" << std::endl;
  return 0;
}

这将由符合任何标准的编译器编译。你被挂断了,std::cout的工作方式在每个平台上都是不同的 - 当然是的。但这就是它的美丽 - 为什么你要关心?在Windows上,如果使用MS Visual C ++编译它,该编译器将具有正确的实现(标准不关心)以支持上述标准方式写入标准输出。同样,在Linux上,GCC会有正确的代码写入任何实现,而在Solaris上,CC也会这样做。

您不必担心或坦诚关心。您的平台的处理由您用于该平台的编译器提供。你有一个很好的干净的高级界面可供使用。

您是否关心Java VM如何处理每个平台的详细信息?你没有,这不是你关心的问题,你知道什么时候System.out.println()它会被适当地写入屏幕(或者那个VM的任何东西)。那你为什么要挂在这上面呢?

你所了解的是你在特定平台上使用的编译器是否会提供标准库中的所有功能(即它是否完全符合标准),如果没有,缺少什么以及如何解决它。其余的坦率地说是无关紧要的!

至于如果你不喜欢它,那么像Roguewave这样的东西也要付出代价 - 坦率地说,这会让你的钱变小,但是你的钱也要小便了...

答案 2 :(得分:2)

标准库正是 - 标准库。它由标准定义。每个符合标准的编译器都必须提供它。所以保证它可以在符合标准的实现中移植(无论你的目标平台是否只有一个完全不同的问题)。它与平台SDK无关(无论是使用它实现的还是无关紧要的 - 可观察行为必须相同)。

答案 3 :(得分:1)

标准(因此标准)的想法是,无论您使用什么平台,它都受到尊重和统一。 一些开发人员提供的设备支持全部或部分std库,实际上只是由他们来实现。

这是特定于平台的,可能在每个平台的SDK文档中都可用,最有可能通过SDK或在供应商的网站上提供。