Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.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
在文件对象上使用fstream 我是C++初学者,刚刚完成C++入门,我自己玩了几个项目。我注意到的一点是,尽管C++的引物倾向于强调代码> STD::fStase作为文件IO的方法,但是许多程序使用的是文件*/COD>_C++_Io - Fatal编程技术网

在文件对象上使用fstream 我是C++初学者,刚刚完成C++入门,我自己玩了几个项目。我注意到的一点是,尽管C++的引物倾向于强调代码> STD::fStase作为文件IO的方法,但是许多程序使用的是文件*/COD>

在文件对象上使用fstream 我是C++初学者,刚刚完成C++入门,我自己玩了几个项目。我注意到的一点是,尽管C++的引物倾向于强调代码> STD::fStase作为文件IO的方法,但是许多程序使用的是文件*/COD>,c++,io,C++,Io,这有什么原因吗?如果有,在什么情况下您会/应该在文件上使用fstream,或者有我不知道的第三个选项,您会推荐吗 谢谢 /CODE函数族)的唯一原因是与C代码的接口,代码采用代码>文件*/COD>参数。许多使用C和C++的人使用STDIO认为这些函数有点优越。主要的抱怨是使用stdio的格式说明符要短得多。不幸的是,它们也容易出错,尽管有警告指出了格式说明符和实际参数之间的不一致,但我还没有看到一个程序能够正确地使用stdio IOstreams中stdio做得更好的一个遗漏是scanf()函数

这有什么原因吗?如果有,在什么情况下您会/应该在
文件
上使用
fstream
,或者有我不知道的第三个选项,您会推荐吗


谢谢文件> /CODE函数族)的唯一原因是与C代码的接口,代码采用代码>文件*/COD>参数。许多使用C和C++的人使用STDIO认为这些函数有点优越。主要的抱怨是使用stdio的格式说明符要短得多。不幸的是,它们也容易出错,尽管有警告指出了格式说明符和实际参数之间的不一致,但我还没有看到一个程序能够正确地使用stdio

IOstreams中stdio做得更好的一个遗漏是
scanf()
函数可以进行一些有趣的解析。这可以很容易地添加到IOstreams中,但它不是标准库的一部分(并且它没有格式说明符那么简洁)

我个人认为,与优点相比,这些缺点是不相关的:

  • 类型安全读写
  • 对用户定义类型的用户定义支持
  • 支持用户定义的源和目标
  • 在较小程度上控制数字类型的格式

由于早期iOnFixes(其中一些仍然在流行平台上逗留)的一系列文章和一些非常糟糕的实现,C++流获得了不正确的慢的名声。是的,可以确保它们比stdio慢得多,但肯定可以以与stdio类似的性能实现它们。但是,用户需要避免一些简单的性能错误:


  • 不要使用
    std::endl
    。时期如果你真的想写一个换行符,后面跟一个同花顺,那么说:
    out
    FILE
    是C语言的东西<代码> STD::fStuts是C++的东西。其中一个更适合C,而另一个只能在C++中使用。<代码> fStase与 Frad 相比,有一个有点臭名昭著的低效性。@克里斯(引用引用)@克里斯,如果你在谈论性能,也许,但我想你应该先对它进行一下,看看它是否与你的应用程序相关。否则,最好选择C++的iostream,除非您真的需要牺牲易用性来提高性能。事实上,文件流的一些实现是可怜的。然而,实现与stdio函数具有类似性能的流是相对困难的,但也是可行的(实际上,我认为性能更好,但我没有具有此属性的实现)。需要注意的是,许多应用程序使用
    std::endl
    主动降低其输出性能:我在生产代码中不止一次发现IOstreams性能问题的核心是这一点。此外,在某些系统上,您可能希望使用
    std::sync_with_stdio(false)
    来释放IOstreams上的手制动器。