0

私はC ++プログラムを書いています。ここにタスクがあります:

string proj_Name別の文字列アドレスがあり、プログラムの横に root という名前のフォルダーがあります。ここproj_nameで、ルート フォルダーに名前を付けたフォルダーを作成し、アドレスからすべてをこの新しいフォルダーにコピーする必要があります。

ディレクトリの作成やファイルのコピーにLinuxターミナルを使用する場合、またはと入力しmkdir proj_nameますcp [src] [dst]。プログラムで端末コマンドを使用するには、システム コールを使用する必要があると言われましたが、システム コールとは何か、またどのように使用できるかわかりません。

それに加えて、ルートにさらにいくつかのプロジェクト フォルダーを作成する場合があり、プログラム内でそれぞれのフォルダーにアクセスできる必要があります。

これらのファイルとフォルダーを処理するために OOP 設計を使用するにはどうすればよいですか (たとえばproj_name、ユーザーから取得し、ルートで対応するフォルダーを見つけて、そのプロジェクトに対していくつかのタスクを実行する必要があります)。

絶対に が必要ですが_project_ class、必要なメンバー変数がわかりません。さらに、次のような再帰的な方法でフォルダーをコピーできると言われました。フォルダーをコピーする->開く->ファイルごとに->ファイルをコピーする->フォルダーごとに、最初からこのアルゴリズムを実行します。

誰でも私を助けてもらえますか?

前もって感謝します。

4

1 に答える 1

1

あなたは宿題だとは言いませんが、これは宿題だと思います。次の 3 つのソリューションが思い浮かびます。

  1. 呼び出しを使用して、system()コマンド ライン文字列を作成し、実行します。率直に言って、これはいくつかの理由で非常にひどいものです: (i) コマンドが機能したかどうかを確認するのが難しい、(ii) 悪意のあるコード (つまりハッキング) を挿入するのは簡単、(iii) プラットフォーム固有です。

  2. あなたが言及したように、システム コールを使用して、ファイルのコピー、ディレクトリの作成などを行うことができます。UNIX で作業している場合は、この質問を参照してください。繰り返しになりますが、ここでの欠点は、プラットフォーム固有であることです。

  3. 最後に、(これら 3 つのソリューションの中で) 最適なBoost ファイルシステムなどの汎用ライブラリを使用できますが、OO でファイルシステムをモデル化できることを実証する必要がある場合は、あまり役に立たない可能性があります。ただし、API に目を通すと、さまざまなオブジェクトが OO 設計にどのように適合するかについての手がかりが得られる場合があります。

于 2012-05-18T13:58:02.237 に答える