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),因此您可能会意外地使用它们做一些非常糟糕的事情

  • 您将获得可以以任何方式实现的抽象输入/输出/可查找流

    您可以从文件、内存、字符串甚至自定义过滤器或zlib压缩器中写入/读取流

    一些C库提供了设置读/写处理程序的选项(BSD和Linux),但仍然没有 与std::streambuf的功率相同,这些不是标准功率

  • 您可以使用特定于流的区域设置,允许您根据要流的任何区域设置格式化数据 线程特定的方式

  • 类型安全
  • 写入和读取流通用对象(复杂变量、XML对象等)

  • 更多?

    有几个优点,主要是使用
    操作符。获取一行代码并没有什么不同,尽管能够将它读入
    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数组,您必须正确分配它,跟踪它的大小,然后取消分配它。