2011-07-13 70 views
3

c++のディレクトリからファイルを削除するにはどうすればよいですか?引数で文字列を含むファイルを削除する

私はこの機能を知っています。int remove (const char * filename)は、引数にファイル名が指定されているファイルを削除します。しかしそれはただchar*を受け入れます。それは引数としてstringを受け入れるC++の他の関数はありますか?

答えて

8

std::stringがある場合は、c_str()メンバー機能を呼び出すことでconst char*を得ることができます。

removeの関数<cstdio>は、C標準ライブラリの一部です。 Cにはクラスまたはstd::stringという概念がないため、なぜ関数がconst char*で、std::stringではないのですか?

1

Boostライブラリを使用できる場合は、代わりにBoost :: Filesystemを調べるとよいでしょう。これは、ファイル操作ルーチンの代わりに<cstdio>にあります。

0

Jamesさんが述べたように、string相当品でremove()と電話することができます。これはstring::c_str()を呼び出して取得できます。 (このコードはテストしていませんが、それは考えです):

#include <iostream> 
#include <cstring> 
#include <string> 

using namespace std; 

int main() 
{ 
    string filename("filename.ext"); 

    if (remove(filename.c_str()) != 0) 
    { 
     perror("Error deleting file"); 
    } 
    else 
    { 
     puts("File successfully deleted"); 
    } 

    return 0; 
} 
関連する問題