C++ I/O library

C++ I/O library

本文关键字:library C++      更新时间:2023-10-16

我试着在谷歌上搜索这个,但在不同的地方得到了不同的答案。我想知道应该使用以下其中一种的情况:

#include <stdio>
#include <cstdio>
#include <iostream>

我无法弄清楚其中的区别,因为在我的情况下,如果我可以互换使用这些程序,我所有的C++程序似乎都能工作。话虽如此,iostream似乎通过定义cin和cout等来支持输入和输出流。然而,我可能错了。如果能参考C++标准使用这些内容,我将不胜感激。我想知道使用其中一个是否有任何性能优势。

非标准标头

  • <stdio>在我所知道的任何标准中都没有定义

C的标准接头

  • CCD_ 2是包含类似printf()scanf()的函数的c报头

C的标准接头++

  • <stdio.h>包含在c++标准中,但已被弃用
  • CCD_ 6是包含CCD_ 7和CCD_
  • <iostream>是一个c++头,包括std::coutstd::cerrstd::cin

stdio用于C中的标准IO。它的末尾应该有一个.h。在C++中,所有的C标头都封装在cxxxxxx标头中(没有.h)。因此,<stdio.h><cstudio>相同。这些为简单IO提供了类似printf<stdio.h>0的功能

另一方面,iostream是C++的IO库,并提供如您所提到的cincout之类的流。

根据您的应用程序,您可以在大多数情况下互换使用它们。显然,语法会有所不同。

使用C函数可以更容易地格式化文本。例如:

printf("item %04d has a value of %+.6en", index, value);

比(除了<iostream>之外还需要<iomanip>)更容易写入:

std::cout << "item " << std::setw(4) << std::setfill('0') << index
          << "has a value of " << std::setprecision(6) << value << "n";

但是,使用第一个时需要更加小心。例如,以下行不会产生编译错误(但正如sharth所提到的,编译时可能会收到警告),但会导致运行时问题:

printf("I wonder what will happen? %dn");

我认为它们的性能没有太大差异,因为大多数流"魔术"都发生在编译时,它们应该会产生类似的结果。虽然我不是100%确定,但如果我错了,请纠正我。

没有stdio(stdio.h和cstdio)。标头名称中的"c"和缺少的".h"表示它是c标头的c++版本。

检查cstio和iostream(参考)

一些编译器(包括MSVC)在其他stl头中包含stl头,这会导致您观察到的效果。这不是便携式的!

如果您关心性能:使用C++变体并检查此