2017-10-18 3 views
-2

システムに2つのフォルダがあり、1つは「画像フォルダ(画像あり)」、2つ目は「テキストフォルダ(テキストファイル含む)」です。これらのフォルダには、abc.jpgやabc.txtのような名前と画像ファイルがあります。テキスト(.txt)ファイルを画像(.jpg)ファイルに一致させる

実際には、入力画像名を使用して2番目のフォルダからテキストファイルを探したい(または、テキストファイル名と画像名を一致させたい)。

その後、一致するテキストファイルを「イメージフォルダ」にコピーします。

私はWINDOWSオペレーティングシステムで作業しています。あなたの問題は、2人の異なるファイル名を検索する場合

+3

これはあなたが欲しいものです。ここで取り組むべき重要なことは**あなたが試したことです**。これはC++の質問です。あなたのC++コードはどこですか? – tadman

+0

「ディレクトリ内のファイル名を取得する方法」を検索し、「比較文字列ファイル名」を検索し、次にファイルをコピーする方法を探します。 – aghilpro

+1

運用システムプラットフォームでなくてもヒントを提供することは困難です。必要な情報で質問を改善してください。ところで、このリンクを参照してStackOverflowの仕組みに慣れてください:https://stackoverflow.com/tour – Doleron

答えて

2

(しかし、同様のベース名を持つ)、それに気づく:

  • ディレクトリやフォルダはC++ 11またはC++14標準に不明です。将来のC++ 17標準ではfilesystemライブラリ(しかし、あなたは、今日簡単に成熟した実装を見つけることができません)

  • POSIXとWindowsがdirectories(いないフォルダ)を持っているを提供するかもしれません。 opendir(3)readdir(3)closedir(3)stat(2)を組み合わせて使ったり、nftw(3)のような上位レベルのライブラリ関数を使うことができます(特にLinuxやMacOSXの場合)。

  • basename(3)が役に立ちますが、/がディレクトリセパレータとして使用されていることがわかったら、string関数を使用できます。

  • 一部フレームワークライブラリ、特にQtPOCOBoost、.... は、ディレクトリに便利な機能を提供し、いくつかのオペレーティングシステム上で使用可能なそれらの共通の抽象化を与えることができます。実際にははフレームワークライブラリを使用することをお勧めします。なぜなら、それはより簡単で移植性が高いからです。 file systemsの、およびディレクトリの

fileの概念は、非常にoperating system特定(およびいくつかの学術のOSがそれらを持っているとpersistenceの異なる概念を提供していない)です。概要はOperating Systems: Three Easy Pieces(無料でダウンロード可能)をお読みください。 LinuxおよびPOSIXシステムでは、ファイルは実際にはi-nodeであり、ディレクトリはiノードに名前をマッピングするエントリを持つ種類のファイルであり、ファイルはさまざまなディレクトリに複数の名前を持つことができます(link(2)などを使用)。 C++標準は約standard streamsを知っている。そのinput/output libraryを通ります。

ファイルのコピーとは、一般に、その内容(バイト単位)をコピーすることを意味します。これは、基本的な操作ではありません。実際には、少なくとも16キロバイトの大きなブロックをよりよくコピーしてください。いくつかのライブラリは、ファイルをコピーする機能を提供します。

Windowsでは(私にはわかりませんが)ファイルと "folder"という概念が異なり、ディレクトリ区切り文字は\です。 Microsoft documentationにダイビングする必要があります。 Microsoftのドキュメントでさえ、directoriesと書いてあります。しかし、フレームワークライブラリを使用するほうが簡単です(移植性が向上します)。

ところで、フォルダの用語は一般的に間違っています。あなたのGUIまたはdesktop environmentには、の一部のフォルダが含まれていますが、OS(およびプログラム)はディレクトリとファイルについて認識しています。

場合によっては、ファイルよりも高いレベルの抽象化を使用すると便利です。たとえば、SQLiteライブラリでは、データベース抽象化を提供しています。GDBMはインデックスファイルを提供します。databaseシステム(PostGreSQLまたはMongoDBなど)を使用することを検討することもできます。YMMV。

関連する問題