C++ C++;iostreams必须提供与C stdio库相比的服务吗?
可能重复:C++ C++;iostreams必须提供与C stdio库相比的服务吗?,c++,iostream,stdio,C++,Iostream,Stdio,可能重复: 我是在对另一个问题的评论中提出这个问题的,我被要求把它变成一个恰当的问题 为什么我要使用iostream而不是stdio?更具体地说,std::getline在C等价物上提供了什么 请不要使用语言攻击。 < P>,如果你使用IoSoo流,那么你就要使用 STD::String ,而不是用 char 数组,这意味着你有更少的内存管理要担心。 < P>嗯,如果你使用C++,你可能想使用OOP,对吗?我猜cstdio(又名stdio.h)的存在只是为了与C兼容。最大的好处是类型安全。C中
我是在对另一个问题的评论中提出这个问题的,我被要求把它变成一个恰当的问题 为什么我要使用iostream而不是stdio?更具体地说,std::getline在C等价物上提供了什么
请不要使用语言攻击。 < P>,如果你使用IoSoo流,那么你就要使用<代码> STD::String ,而不是用<代码> char 数组,这意味着你有更少的内存管理要担心。 < P>嗯,如果你使用C++,你可能想使用OOP,对吗?我猜cstdio(又名stdio.h)的存在只是为了与C兼容。最大的好处是类型安全。C中的格式字符串没有类型(不像OCaml或boost::Format),因此您可能会意外地使用它们做一些非常糟糕的事情
更多?有几个优点,主要是使用
操作符。获取一行代码并没有什么不同,尽管能够将它读入std::string
是一个相当大的优势
C++I/O具有类型安全性。您不会将参数列表写为带引号的字符串,然后再写为变量等等。你写一次你要打印的东西,C++计算出它们有多少个参数和它们的类型。当类型不匹配时,C I/O可能会导致I/O错误,甚至尝试访问受保护的内存
C++I/O易于扩展。一旦有了要复制的示例,就可以轻松编写operator()
printf()
和friends不能扩展。您有一个固定的格式类型列表
C++ +I/O,虽然看起来相当简单,但是有很多程序员可访问的结构,因此一个好的C++程序员可以修改它来覆盖C/IO不能的情况。(不要过度使用)
(你在C++代码中使用的I/O库?)()有一个很好的讨论交易。你已经可以在PtRTF中使用.cString(),它有一个STD::String。std::string很好,但它独立于iostreams。@Chris:但是没有任何字符串输入功能?@Chris我特别想到的是std::getline()
。它将行读入std::string
,而不是将行读入字符数组的fgets()
。对于char数组,您必须正确分配它,跟踪它的大小,然后取消分配它。