2009-03-04 16 views
-2

純粋にC(++)を使用してフォルダからファイル名を読み取る方法はありますか?これは、windows.h(FindFirstFile()などはありません)を含まないことを意味します。 fstreamにこの機能があるようには見えません。私はファイル名がオペレーティングシステムに依存していることを知っていますが、私はそこにWindowsでそれを可能にするライブラリがあることを願っていました。C++でファイル名を読み取る

ありがとうございます!

+0

これはあなたの他の質問と全く同じです。あなたは "no FindFirstFile()"を追加しました。冗長な質問を追加しないでください。 –

+0

あなたの前の質問にもこの解決策を見てください:http://stackoverflow.com/questions/609203/reading-file-names/609236#609236。他の人たちと同じように、彼はブーストを勧めます。 –

答えて

10

boost filesystemは素晴らしい解決策です。フードの下ではもちろん、ウィンドウAPIコールを使用しています(ウィンドウでビルドする場合)。しかし、これはあなたから抽象化されています。

4

C++は通常、このような機能を提供していません。クロスプラットフォームソリューションはboost::filesystemを使用することです。

0

ディレクトリを反復処理するためにPOSIX関数opendir()とreaddir()を試してください。マニュアルページについては、this linkを参照してください。これらの関数は、ほとんどのプラットフォーム(WindowsとUNIXの両方)で使用できるようにする必要があります。

+0

残念なことに、彼は最初に答えを聞いたときに聞いていませんでした。 –

+0

WindowsはPOSIXではないため、これらの関数はWindowsでは使用できません。しかし、Cygwinでは利用可能です。 –

+0

ウィンドウでは、posix関数の小さなサブセットが(間違っていても失敗した)-posixサブシステムの一部として提供されていませんか?私はちょっと一言はそれの一部であり、そうでないことは決して確かではありませんでした。 –

0

Windowsでopendir()とreaddir()を使用する場合は、有名なGNUコンパイラコレクションのWindowsポートMinGWをダウンロードできます。これにはdirent.hを含むUNIXヘッダーファイルのWindowsポートが含まれており、指定された機能を使用できます。これらはネイティブAPIをどちらかの方法で呼び出すことに注意してください。

-John

+0

実際には、これを動作させるにはcygwin.dllの上に構築する必要があると私は信じています。 mingwはMicrosoftのランタイムにリンクされたc/C++コンパイラを提供するだけです。 –

+0

これは私が言ったことです...ネイティブのWin32 APIをどちらの方法でも呼び出すでしょうが、あなたのコードでそれらを使う必要はありません。 –

関連する問題