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

时间:2017-12-29 07:37:52

标签: c++ input file-io inputstream .doc

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

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

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

3 个答案:

答案 0 :(得分:1)

如果你的意思是一个拳头是的,它将工作读取文件内容,但是在复杂文件的情况下你必须处理文件格式,c ++库将不会自动提取文本内容。如果您将文件保存为所有剩下的文本,那么所有流都将被读取。

答案 1 :(得分:1)

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

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

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

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

答案 2 :(得分:1)

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

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

如果您的目标是生成某个文档,则可以考虑采用PDF格式(这是标准格式),也许使用text formatterLaTeX之类的Lout生成它或某个库(例如cairoPoDoFo等...)。

  

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

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