удаление файла со строкой в ​​аргументах - PullRequest
3 голосов
/ 13 июля 2011

Как я могу удалить файл из каталога в c++?

Я знаю, что эта функция int remove ( const char * filename ) удаляет файл, имя файла которого указано в аргументе.Но он принимает только char*.Есть ли какая-либо другая функция в c ++, которая принимает string в качестве аргумента?

Ответы [ 3 ]

9 голосов
/ 13 июля 2011

Если у вас есть std::string, вы можете получить const char* из него, вызвав функцию-член c_str().

Функция remove из <cstdio> является частью стандарта CБиблиотека.В C нет понятия классов или std::string, поэтому функция принимает const char*, а не std::string.

1 голос
/ 13 июля 2011

Как упоминал Джеймс, вы можете вызвать remove () с вашим string C-эквивалентом, который можно получить, вызвав 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;
}
1 голос
/ 13 июля 2011

Если вы можете использовать библиотеки Boost, вы можете вместо этого взглянуть на Boost :: Filesystem. Это замена для процедур обработки файлов в .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...