2017-10-18 151 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等等。

相關問題