我应该在我的C++程序中混合C和C++样式的I / O吗?[已结束]

should I mix C & C++ style I/O in my C++ program? [closed]

提问人:Destructor 提问时间:4/18/2015 最后编辑:Destructor 更新时间:5/27/2016 访问量:379

问:


想改进这个问题吗?更新问题,以便可以通过编辑这篇文章来用事实和引文来回答。

8年前关闭。

这个问题让我很困惑。因为C++是C的超集,程序员可以自由使用C的库函数,如printf(),scanf()等。但是我通常喜欢C++的面向对象的I / O系统,我最喜欢使用cout和cin。因为 iostream 类型更安全,更不容易出错,可扩展,灵活且可继承。我应该因为 iostream 的优势而停止使用传统 C 的 I/O 函数,还是应该修改我的程序以使用?哪种方法更好?混合 C 和 C++ I/O 时应该注意什么。我知道向后兼容传统 C 程序是必要的,但我真正应该怎么做?

C++ C IOstream CSTDIO

评论

1赞 Sir Jo Black 4/18/2015
C++ 不是 C 的超集。它是一种不同的语言,也嵌入了 C。
0赞 Michael Dorgan 4/18/2015
尝试 malloc 和 delete 一起,看看它如何为您工作:)
1赞 Johan Lundberg 4/18/2015
默认情况下,使用可以最清楚地表达您正在做的事情的方法。通常为 C++ 流。
0赞 Mooing Duck 4/18/2015
@SergioFormiggini:如果它嵌入了 C,那么它将是一个超集。它不是一个超集,因为它只“嵌入”了大部分 C,而不是全部。
1赞 Destructor 4/18/2015
@MichaelDorgan:不,不能保证组合 malloc() 和 delete 运算符会起作用。这是未定义的行为。

答:

2赞 QuestionC 4/18/2015 #1

默认情况下,C++ 和 C 流是同步的,因此您可以安全地混合它们。此行为由 std::ios_base::sync_with_stdio 控制。


至于你是否应该这样做?无所谓。C++ 没有通用样式指南。有些程序员更喜欢C++ iostreams接口,有些喜欢C的方法,有些则混合使用它们。

这里有一些链接,可以比我更好地讨论这个问题。

我应该切换到 C++ I/O 流吗?

胶带编程器 - Joel Spolsky