C++ I/O library
C++ I/O library
我试着在谷歌上搜索这个,但在不同的地方得到了不同的答案。我想知道应该使用以下其中一种的情况:
#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::cout
、std::cerr
和std::cin
stdio
用于C中的标准IO。它的末尾应该有一个.h
。在C++中,所有的C标头都封装在cxxxxxx
标头中(没有.h
)。因此,<stdio.h>
与<cstudio>
相同。这些为简单IO提供了类似printf
和<stdio.h>
0的功能
另一方面,iostream
是C++的IO库,并提供如您所提到的cin
和cout
之类的流。
根据您的应用程序,您可以在大多数情况下互换使用它们。显然,语法会有所不同。
使用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++变体并检查此
- Boost Graph Library,修复节点大小
- SFML library: http request
- 解决"ld: library not found for -ltensorflow_framework.2.3.0"
- Linking library C++
- 在VS2019项目中集成ImageMagick:x64-windows-static library
- OpenSSL fips in C++ wrapper Library 如何?错误:指纹不匹配
- C++ class vs a library
- C++ library with Tensorflow on Android
- CMake:尝试在 Jenkins 构建机器上运行时出现"Linked Library"错误 (0xc0000135)
- 将 c++ cmake-library 构建发布到本地存储库时出现 Gradle 错误
- 为什么'allocate in one library and free in the other'是错误的
- 链接 library.lib 使用 setup.py.
- 目标提升::<library>已经有导入的位置 + 链接错误
- Visual Studio 2017 C++,如何定义一个"环境变量"'Additional Library Directory'?
- C++ Boost SML Library
- Windows 套接字和身份验证构建在包含 Poco-Library 时失败
- Qt小部件应用程序"Library not registered"错误
- Xcode/IOS: linking a CMake library
- 如何修复'The procedure entry point SDL_RWclose could not be located in the dynamic link library'
- Creating C++ API Library