純粋にC(++)を使用してフォルダからファイル名を読み取る方法はありますか?これは、windows.h(FindFirstFile()などはありません)を含まないことを意味します。 fstreamにこの機能があるようには見えません。私はファイル名がオペレーティングシステムに依存していることを知っていますが、私はそこにWindowsでそれを可能にするライブラリがあることを願っていました。C++でファイル名を読み取る
ありがとうございます!
純粋にC(++)を使用してフォルダからファイル名を読み取る方法はありますか?これは、windows.h(FindFirstFile()などはありません)を含まないことを意味します。 fstreamにこの機能があるようには見えません。私はファイル名がオペレーティングシステムに依存していることを知っていますが、私はそこにWindowsでそれを可能にするライブラリがあることを願っていました。C++でファイル名を読み取る
ありがとうございます!
boost filesystemは素晴らしい解決策です。フードの下ではもちろん、ウィンドウAPIコールを使用しています(ウィンドウでビルドする場合)。しかし、これはあなたから抽象化されています。
C++は通常、このような機能を提供していません。クロスプラットフォームソリューションはboost::filesystem
を使用することです。
ディレクトリを反復処理するためにPOSIX関数opendir()とreaddir()を試してください。マニュアルページについては、this linkを参照してください。これらの関数は、ほとんどのプラットフォーム(WindowsとUNIXの両方)で使用できるようにする必要があります。
残念なことに、彼は最初に答えを聞いたときに聞いていませんでした。 –
WindowsはPOSIXではないため、これらの関数はWindowsでは使用できません。しかし、Cygwinでは利用可能です。 –
ウィンドウでは、posix関数の小さなサブセットが(間違っていても失敗した)-posixサブシステムの一部として提供されていませんか?私はちょっと一言はそれの一部であり、そうでないことは決して確かではありませんでした。 –
Windowsでopendir()とreaddir()を使用する場合は、有名なGNUコンパイラコレクションのWindowsポートMinGWをダウンロードできます。これにはdirent.hを含むUNIXヘッダーファイルのWindowsポートが含まれており、指定された機能を使用できます。これらはネイティブAPIをどちらかの方法で呼び出すことに注意してください。
-John
実際には、これを動作させるにはcygwin.dllの上に構築する必要があると私は信じています。 mingwはMicrosoftのランタイムにリンクされたc/C++コンパイラを提供するだけです。 –
これは私が言ったことです...ネイティブのWin32 APIをどちらの方法でも呼び出すでしょうが、あなたのコードでそれらを使う必要はありません。 –
これはあなたの他の質問と全く同じです。あなたは "no FindFirstFile()"を追加しました。冗長な質問を追加しないでください。 –
あなたの前の質問にもこの解決策を見てください:http://stackoverflow.com/questions/609203/reading-file-names/609236#609236。他の人たちと同じように、彼はブーストを勧めます。 –