Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么C++;还在用stdio.h吗?_C++_Visual Studio 2010 - Fatal编程技术网

C++ 为什么C++;还在用stdio.h吗?

C++ 为什么C++;还在用stdio.h吗?,c++,visual-studio-2010,C++,Visual Studio 2010,这可能是个愚蠢的问题,但我找不到我一直在寻找的答案。另外,我不确定这是一个C++问题还是一个VS2010问题,但我要的答案是一个技术的POV,所以我在这里结束了。 当您在VS2010中启动一个新的控制台应用程序项目时,它会自动包括stdafx.h,而stdafx.h又包括stdio.h。 我找到的关于stdio.h与iostream的答案大致如下: stdio.h用于C,iostream用于C 在C中使用++ 我不知道这是对还是错,但是 强>我的问题是: IO流是相当慢的,引导程序员继续使用 S

这可能是个愚蠢的问题,但我找不到我一直在寻找的答案。另外,我不确定这是一个C++问题还是一个VS2010问题,但我要的答案是一个技术的POV,所以我在这里结束了。 当您在VS2010中启动一个新的控制台应用程序项目时,它会自动包括stdafx.h,而stdafx.h又包括stdio.h。 我找到的关于stdio.h与iostream的答案大致如下:

stdio.h用于C,iostream用于C 在C中使用++

我不知道这是对还是错,但是


<>强>我的问题是:通常项目是使用
创建空项目创建的,这样您就可以自己自定义包含和预编译的标题了


我不知道为什么会出现这种“默认”,但是像我以前描述的那样从头开始设置项目是件好事。在旧的C++实现中,

< P> IO流是相当慢的,引导程序员继续使用<代码> STDIO。显然,它在过去包含在stdafx.h中,不能再从该头中删除,因为删除它会破坏现有的代码。

即使您使用流输出,也可以进行一些格式化。因此,如果没有其他东西,有时会使用sprintf。sprintf住在stdio.h

可能是因为VisualStudio的目标是Mort程序员,如果没有printf,他们将无法完成“我的第一个c++程序”,他们会认为该产品无法正常工作


在否决之前,google visual studio mort persona。

删除新项目的默认值会如何打破现有代码?大多数被放入新项目的文件都需要
#include stdio.h
如果这是正确的,我认为它相当准确地回答了我的问题。换句话说,它是一个从STDIO .h(比在C++中的IOFFROW)更频繁地使用IO操作的剩余物,现在对于C++编程来说,它是否可以被认为过时了?此外,正如Yippie Kai-Yay所说,我最好还是从一个空项目开始。谢谢无论如何,我不会使用诸如
stdafx.h
之类的头文件。C++的包含机制已经够粗糙了,编译器供应商不应该让它变得更糟。实际上,
stdafx.h
对于大型项目来说有助于加快编译时间。好吧,如果你不喜欢,你可以随时关掉它。@James:stdafx.h
没有什么神奇之处。对于较大的项目,您确实需要为不同的子项目使用专用的预编译头。例如,非GUI部件可以定义
NOGDI
。流具有格式。还有Boost.Format。不需要sprintf(而且无论如何你应该使用snprintf)。是的,Boost。。。无数的代码,疯狂的编译错误,你得到的是Boost.Format而不是printf()!这对hello world来说不公平。