C ++中的fin是否可以与.doc文件一起使用?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C ++中的fin是否可以与.doc文件一起使用?相关的知识,希望对你有一定的参考价值。

我使用fin读取.doc文件,然后将所有文本存储在一个字符串中。当我尝试打印字符串时,我只看到了未知字符。

当我将.doc文件的内容复制到.txt文件然后使用fin读取.txt文件时,一切正常。

我的问题是fin是否适用于复杂文件(例如.doc)或仅适用于.txt文件。我的.doc文件中只有文本(没有图形或任何东西),但字体是Calibri,它不是fout用于将文本打印到.doc文件的字体。

答案

如果用fin表示一个thrream是的,它将用于读取文件内容,但是在复杂文件的情况下你必须处理文件格式,c ++库将不会自动提取文本内容。在您将文件保存为文本的情况下,所有剩下的文件都将被读取。

另一答案

默认情况下,fstream会以文本模式和.doc文件中的所有操作使用MS-DOC二进制文件格式。因此,当您尝试阅读doc文件并将其打印出来时,它可能会显示您无法理解的字符(可能是二进制文件)。

如果您尝试读取fstream中的任何文件,它会读取它。

我尝试使用fstream以二进制文件读取.mp4文件,它确实读取了文件(我可以保证,因为我将读取的内容粘贴到另一个文件中,并且该文件结果是同一个视频)。

所以回答你的问题是你可以读取fstream中的任何文件,但是fstream只用两种方式完成所有这些操作,无论是文本还是二进制。因此,读取任何文件都不会有什么好处,除非您想要执行诸如将文件内容复制到另一个文件内容之类的操作。

另一答案

你首先需要了解.doc file format。首先阅读doc (computing) wikipage。它非常复杂(所以至少你需要几个月的工作),但或多或​​少都有记录。

您可以考虑采用不同的方法来实现总体目标。例如,如果您需要解析.doc文件(由某些Microsoft Word软件提供),您可以使用libreoffice提供一些库来解析它,或者您可以找到另一个库(例如DocxFactorywvware,...),或者您可以使用一些COM接口到Word(在安装了MicroSoft Word的Microsoft Windows操作系统上)。

如果你的目标是生成一些文档,你可以考虑PDF格式(这是一个标准),也许使用一些text formatter,如LaTeXLout来生成它,或者一些库(例如cairoPoDoFo等等)。

我的问题是fin是否适用于复杂文件(例如.doc)

BTW,C ++ standard IO能够读取二进制文件,但你需要为它们编写parser(所以你需要准确理解你的文件格式)。你应该更喜欢open formatsproprietary formats

以上是关于C ++中的fin是否可以与.doc文件一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

强制包含可以与 Visual C++ 中的预编译头一起使用吗?

证书是否与iOS中的配置文件相关?

vtune 与 mingw

是否可以将 Rx“使用”运算符与 IAsyncDisposable 一起使用?

是否可以将 Rx“使用”运算符与 IAsyncDisposable 一起使用?

是否可以将远程文件从 Electron App 拖到文件系统上?