2011-07-24 9 views
0

ちょっとSTLのI/Oについて知りました。これは、シリアライズとアーカイブを強化してくれました。 フォルダを除いてどのような種類のファイルを作成すると、私の形成されたファイルを保持/収集できますか?std :: fstream、boost、またはその他のものを使ってフォルダファイルを作成する方法

コードを使用してフォルダを作成するにはどうすればよいですか?好ましくはboost :: SerializeまたはSTLを使用しますか?
プラットフォームに依存しないとうれしいでしょう。


[OK]を、今私が見てきた/ブースト::ファイルシステムを使用しようとしました。しかし、私はrefrenceのドキュメントを見ると、create_directory()に関する情報はあまりありません。 私は、次のような質問が残っています。ディレクトリがすでに存在する場合はどうなりますか?

bool create_directory(const path & p); bool create_directory(const パス& p、システム:: error_code & ec);影響: ディレクトリpを作成しようとすると、POSIX mkdir()の場合と同様に、2番目の引数 のS_IRWXU | S_IRWXG | S_IRWXOが解決されます。

事後条件:is_directory(P)

戻り値:新しいディレクトリが作成された場合はtrue、そうでない場合はfalse。

例外:エラー報告に指定されています。

私は次のコードを実行しようとしていますか、新しいフォルダか今はディレクトリ=と理解しているかどうかを確認しています。私は1つを見つけることができません!どうして?そして、それはおそらく、あなたがこのタスクであなたの生産性を高めるかもしれないファイルシステムライブラリを探す必要があり、真=/

path testPath("C:\\Users\\Howlett\\Documents\\Visual Studio 2010\\Projects\\boost tests\\newFolderTest"); 
    bool success = create_directory(testPath); 
    bool success2= create_directory("C:\\Users\\Howlett\\Documents\\Visual Studio 2010\\Projects\\boost tests\\Test\\NestedFolderTest"); 
+0

この関数がtrueまたはfalseを返すかどうかについては言及していません。 –

+0

@Nicol Bolasそれは真実を返します。 – Griffin

答えて

1

を返します。 Boost.Filesystem;

これはファイルシステムの処理に非常に優れたライブラリです。具体的な作業はboost::filesystem::create_directoryでカバーされます。


次のソースコードが動作します。ディレクトリが作成されない場合は、実際に探していることを確認するためにWindowsエクスプローラを更新する必要があります。プログラムを2回実行すると、2回目にエラーメッセージが表示されます。

#define BOOST_FILESYSTEM_VERSION 3 
#include <boost/filesystem.hpp> 
#include <iostream> 

namespace fs = boost::filesystem; 

int main(int argc, const char *argv[]) 
{ 
    fs::path thePath = fs::current_path(); 
    std::cout << thePath << std::endl; 

    fs::path newDir = thePath/"newDir"; 
    std::cout << newDir << std::endl; 

    bool bDidCreate = fs::create_directory(newDir); 

    if(!bDidCreate) 
     std::cout << "Directory creation failed!" << std::endl; 

    return 0; 
} 
+0

リンクをありがとうが、私はまだ少し混乱している!質問に私の編集を見ることができますか? – Griffin

関連する問題