何时使用printf / scanf vs cout / cin?

我正在使用MinGW的g ++测试我在网上发现的一些片段。 这是C ++编译器……为什么它正确地编译C ….为什么人们交织在一起C和C ++。

具体问题是:使用C和C ++并在g ++下编译是否可以。 如果答案是肯定的,那么我的生活很简单,因为我不需要修改代码。

奇怪的是……让一些C ++工作,特别是在将字符串传递给ifstream构造函数时,它需要一个C类型的字符串……

我的猜测是,因为C ++有时依赖于C构造,所以可以将两种语言一起编写。

但是,作为一种风格问题,你应该选择cout / cinprintf / scanf

有一些奇怪的地方需要char* 。 您可以使用std::string.c_str()方法来弥补差距。

在大多数情况下,C ++的C子集是兼容的。 究竟它不兼容的方式在很大程度上不太重要:

http://en.wikipedia.org/wiki/Compatibility_of_C_and_C%2B%2B

如果您正在C ++编译器下编译C代码片段,请务必将其更改为使用包含中的“c”lib格式…例如#include 而不是#include

在C ++中使用C头而不是C ++等效(例如stdio.h而不是cstdio)是不好的做法吗?

有关Bjarne自己为什么要避免使用scanf的相当合理的论点,请查看本文的开头部分:

http://www2.research.att.com/~bs/new_learning.pdf

使用iostreams代替printf也有很多好处:

C ++中的’printf’与’cout’

C ++语言从Cinheritance了它的大部分核心function。那是因为C ++是从C派生而来的.C ++标准包含了大部分C标准。 因此,您可以使用C ++编译器使用C构造,习语和范例编写代码。 这样做通常被称为使用C ++“作为更好的C.”

上面的长短是肯定的,你可以在C ++代码中使用printf 。 标准明确允许这样做。

但是,这样做通常会忽略定义C ++的许多function。 我会把这个对话留给另一个问题但是足以说明很多人会告诉你“不要那样做”或“那不是C ++”。 这就说明了为什么你可能不想在C ++程序中使用printf或者你想要的原因。 但请放心,技术上允许这样做。

是否可以同时使用C和C ++并在g ++下编译。

是的,可以将这两种语言混合使用。 这对于以C开头的代码很常见,但随后又添加了越来越多的C ++特性(显然有人在此过程中改变了编译器)。

通常,C代码将使用C ++编译器进行编译和运行。 有许多可能的例外,例如在C代码中使用classvirtual的关键字来表示事物的名称,或C的宽松的投射规则。

你会经常听到人们说“他们是非常不同的语言”。 这是因为您提出的任何编程问题可能会有不同的答案,具体取决于您尝试使用的语言。 但是,还有许多相似之处和向后兼容性方面。

如果您使用C ++,那么使用C ++。 ( cincout
为什么fstream需要c字符串拼图。