FILE 是一个C语言的标准库函数,用于处理文件的输入和输出。它提供了一组函数来打开、关闭、读取和写入文件。 fstream 是C++中的一个标准库类,用于处理文件的输入和输出。它提供了一组函数和操作符来打开、关闭、读取和写入文件。 这两个概念都用于处理文件,但它们的实现方式略有不同。FILE 是C语言中的一种方式,而 fstream 是C++中的一种方式。它们在使用和功能上有些差异,但都能完成文件的读写操作。 根据具体的需求和编程语言,可以选择使用 FILE 或 fstream 来处理文件。

17 浏览
0 Comments

FILE 是一个C语言的标准库函数,用于处理文件的输入和输出。它提供了一组函数来打开、关闭、读取和写入文件。 fstream 是C++中的一个标准库类,用于处理文件的输入和输出。它提供了一组函数和操作符来打开、关闭、读取和写入文件。 这两个概念都用于处理文件,但它们的实现方式略有不同。FILE 是C语言中的一种方式,而 fstream 是C++中的一种方式。它们在使用和功能上有些差异,但都能完成文件的读写操作。 根据具体的需求和编程语言,可以选择使用 FILE 或 fstream 来处理文件。

可能的重复问题:

std::ifstream比FILE慢得多吗?

你在C++代码中使用哪个I/O库?

我想知道在C++中使用fstream和FILE的优缺点是什么?

我认为唯一的优点就是FILE比fstream更高效。

0
0 Comments

fstream比起FILE更好地封装了高层次的概念。

fstream具有更好的异常处理能力。

fstream也是一个流对象,并且可以被通用地作为流来处理。

想象一下:

void read(istream& istr)

我们可以传入一个ifstream,一个istrstream,甚至是cin。这对于单元测试非常有用。

从上面的内容可以看出,使用fstream相比使用FILE,有一些优势和方便之处。首先,fstream更好地封装了高层次的概念,这意味着我们可以使用更简洁和直观的代码来操作文件。其次,fstream具有更好的异常处理能力,这意味着我们可以更好地处理可能出现的错误或异常情况。最后,fstream也是一个流对象,可以被通用地作为流来处理,这意味着我们可以将其作为参数传递给其他函数,实现更灵活的操作和测试。

举个例子来说明,假设我们有一个函数read,它接受一个istream类型的参数istr。我们可以将一个ifstream对象、一个istrstream对象甚至是cin传递给这个函数,这样我们就可以在不同的环境中测试这个函数,非常方便。

,使用fstream相比使用FILE,可以提供更好的封装和高层次的概念,更好的异常处理能力,以及更好的通用性。这使得我们在文件操作中更加方便和灵活。

0
0 Comments

FILE vs fstream的问题是关于使用哪种文件输入输出方式更好的问题。下面是这个问题出现的原因和解决方法:

原因:

1. std::fstream是类型安全的,支持国际化,并且(警告:个人观点)更容易使用。

2. 当std::fstream超出作用域时,它会自动析构,不管是否忘记了关闭它。

解决方法:

1. 关于“忘记关闭”的争论有点站不住脚。尤其是这里的“忘记”这个词意味着这将使您免于思考。事实并非如此。例如,如果您有缓冲字节,关闭操作可能会包括刷新操作,而刷新操作可能失败。您希望这个失败发生在析构函数中,这可能会很不方便处理吗?还是您希望它发生在可预测的地方,与您的其他输入输出操作一起处理?文件是自动内存管理失败的一个很好的例子。类似的论点也可以用于具有垃圾回收机制的语言,以及为什么不依赖于垃圾回收机制来关闭文件。

虽然我不完全同意这种观点,但是这是FILE和fstream之间的一个区别,所以我将其包含在内。它是优点还是缺点完全是主观的。

0
0 Comments

FILE和fstream是C和C++中用于处理文件的两种不同的方法。FILE是C语言中使用的文件指针,而fstream是C++中使用的文件流。

FILE和fstream的选择取决于个人的喜好和应用的具体需求。一些倾向于C++的人可能会说,fstream能更轻松地处理不同类型的数据。使用FILE时,只能处理字节或格式化字符串。由于printf或fwrite等函数无法知道其参数的“真实”类型,这使得出错的可能性更大。另外,C++类有一个析构函数,因此当对象超出范围时,清理工作会“自动”进行。(尽管...你真的希望像fflush这样的操作在析构函数中悄悄地发生吗?可能不希望。)对于这些观点,我会说使用FILE并不是太麻烦,但是,嘿,有些人对这些问题的看法比我更强烈。

最终,选择使用FILE还是fstream取决于应用程序具体要做什么,也可能FILE、fstream或两者都能满足您的需求。

选择适合自己的方法,对他人的选择保持灵活,理解各种观点,不要过于教条主义。这是我的建议。:-)

0