2017-10-18 149 views
-2

我的系统中有两个文件夹,一个是“图像文件夹(包含图像)”,第二个是“文本文件夹(包含文本文件)”。在这些文件夹中,很少有图像和文本文件具有相同的名称,如:abc.jpg和abc.txt。将文本(.txt)文件与图像(.jpg)文件相匹配

其实,我想从第二个文件夹使用输入图像名称(或我想匹配文本文件名称与图像名称)找出文本文件。

此后,我想将匹配的文本文件复制到“图像文件夹”中。

我正在使用WINDOWS操作系统。

+3

这就是你想要的。这里要解决的重要问题是**你尝试过的**。这是一个C++问题。你的C++代码在哪里? – tadman

+0

搜索'如何获取目录中的文件名',然后搜索'比较字符串文件名',然后搜索'如何复制文件'然后完成。 – aghilpro

+1

即使没有提供操作系统平台,也很难提供任何提示。请改善您的问题与所需的信息。顺便说一下,请参阅此链接以熟悉StackOverflow机制:https://stackoverflow.com/tour – Doleron

回答

2

如果你的问题是要找到两个不同的文件名(但具有相似的基本名称),请注意:

  • 目录和文件夹是未知的C++ 11或C++14标准。未来的C++ 17个标准可能会提供一个filesystem库(但你不会找到一个成熟的实现轻松今天)

  • POSIX和Windows有directories(不是文件夹)。您可以使用(特别是Linux或MacOSX上的)POSIX功能,如opendir(3),readdir(3),closedir(3)stat(2)结合使用来探索它们,或者使用一些更高级别的库函数,如nftw(3)

  • basename(3)可能很有用,但是一旦您知道/被用作目录分隔符,则可以使用string函数。

  • 一些框架库,特别是QtPOCOBoost,.... 提供目录有用的功能,并且可以给他们的共同的抽象可用于多个操作系统。其实我推荐使用框架库,因为它更容易,更便携。

file概念的file systems和目录的非常operating system特定的(和一些学术操作系统没有他们,并提供persistence不同的概念)。阅读Operating Systems: Three Easy Pieces(可免费下载)以获得概述。在Linux和POSIX系统上,一个文件实际上是一些i-node,目录是一种文件,具有将映射名称映射到i-节点的条目,并且文件可以在各种目录中具有多个名称(例如使用link(2))。 C++标准知道约standard streams,例如通过其input/output library

复制文件通常意味着复制其内容(逐字节),因此不是基本操作。在实践中更好地复制至少16千字节的大块。一些库提供了复制文件的功能。

在Windows(我不知道)文件和“文件夹”的概念是不同的,目录分隔符是\。你需要潜入Microsoft documentation。甚至微软的文档都提到directories。但是使用框架库会更简单(并且更便于携带)。

顺便说一句,文件夹的术语一般是错误的。您在GUIdesktop environment上看到某些文件夹(并非全部),但操作系统(和您的程序)知道目录和文件。

有时,使用比文件更高级别的抽象是有用的。例如,SQLite库为您提供了一些数据库抽象,GDBM提供索引文件,并且您可能会考虑使用一些database系统,如PostGreSQLMongoDB等等。

相关问题