Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
3 / 2 / 1
Регистрация: 14.10.2012
Сообщений: 50

Удалить файл, используя в качестве аргументов wstring переменные (путь + имя файла)

16.09.2018, 06:38. Показов 1977. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую. Вот:
C++
1
2
3
4
if (remove(line.path + line.filename) != 0)
        listf4 << "Error deleting file: " << line.path + line.filename << endl;
        else
        listf4 << "File successfully deleted: " << line.path + line.filename << endl;
приводит к ошибке компиляции
D:\Files\DuplicateParser\main.cpp|143|er ror: no matching function for call to 'remove(std::__cxx11::basic_string<wchar _t>)'|c:\Qt\Tools\mingw530_32\i686-w64-mingw32\include\stdio.h|508
note: candidate: int remove(const char*)|
c:\Qt\Tools\mingw530_32\i686-w64-mingw32\include\stdio.h|508|note: no known conversion for argument 1 from 'std::__cxx11::basic_string<wchar_t>' to 'const char*'|
c:\Qt\Tools\mingw530_32\i686-w64-mingw32\include\c++\bits\stl_algo.h|893| note: candidate: template<class _FIter, class _Tp> _FIter std::remove(_FIter, _FIter, const _Tp&)|
А если так:
C++
1
2
3
4
if (_wremove(line.path + line.filename) != 0)
        listf4 << "Error deleting file: " << line.path + line.filename << endl;
        else
        listf4 << "File successfully deleted: " << line.path + line.filename << endl;
То приводит к следующей ошибке:
D:\Files\DuplicateParser\main.cpp|143|er ror: cannot convert 'std::__cxx11::basic_string<wchar_t>' to 'const wchar_t*' for argument '1' to 'int _wremove(const wchar_t*)'|
А если делать так:
C++
1
2
3
4
5
const wstring temppath = line.path + line.filename;
        if (_wremove(temppath) != 0)
        listf4 << "Error deleting file: " << line.path + line.filename << endl;
        else
        listf4 << "File successfully deleted: " << line.path + line.filename << endl;
то приводит к следующей ошибке
D:\Files\DuplicateParser\main.cpp|144|er ror: cannot convert 'const wstring {aka const std::__cxx11::basic_string<wchar_t>}' to 'const wchar_t*' for argument '1' to 'int _wremove(const wchar_t*)'|
Четвертая попытка:
C++
1
2
3
4
5
6
const wstring temp = line.path + line.filename;
        const wstring * temppath = temp;
        if (_wremove(temppath) != 0)
        listf4 << "Error deleting file: " << line.path + line.filename << endl;
        else
        listf4 << "File successfully deleted: " << line.path + line.filename << endl;
Опять ошибки:
D:\Files\DuplicateParser\main.cpp|144|er ror: cannot convert 'const wstring {aka const std::__cxx11::basic_string<wchar_t>}' to 'const wstring* {aka const std::__cxx11::basic_string<wchar_t>*}' in initialization|
D:\Files\DuplicateParser\main.cpp|145|er ror: cannot convert 'const wstring* {aka const std::__cxx11::basic_string<wchar_t>*}' to 'const wchar_t*' for argument '1' to 'int _wremove(const wchar_t*)'|
Пятая попытка:
C++
1
2
3
4
5
wstring temp = line.path + line.filename;
        if (_wremove((const wchar_t *)temp) != 0)
        listf4 << "Error deleting file: " << line.path + line.filename << endl;
        else
        listf4 << "File successfully deleted: " << line.path + line.filename << endl;
Ошибка:
D:\Files\DuplicateParser\main.cpp|144|er ror: invalid cast from type 'std::__cxx11::wstring {aka std::__cxx11::basic_string<wchar_t>}' to type 'const wchar_t*'|
Что поделать, не понятно. Еще пути и имена файлов содержат кириллицу и символы других алфавитов, боюсь экспериментировать с конвертированием переменных, как бы не запороть не те файлы по незнанию, если вдруг строки исказятся.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.09.2018, 06:38
Ответы с готовыми решениями:

Отделить путь и имя файла от аргументов в командной строке
Всем здравствуйте. Существует ли в VB.NET функция, выделяющая из командной строки с аргументами полное имя файла? Существует ли в...

Как получить путь к файлу и имя этого файла в переменные
Добрый день, Задача проста, есть решение, но оно не изящное, хотелось бы оптимизировать код. Все делается в VBA Excel 2010. ...

Структурные переменные в качестве аргументов
Задача: Программа должна включать в себя две функции. Первая, time_to_secs(), принимает в качестве аргумента типа time и возвращает...

3
Заблокирован
16.09.2018, 06:47
Лучший ответ Сообщение было отмечено Рольф как решение

Решение

C++
1
_wremove(temp.c_str())
попробуй
0
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,242
16.09.2018, 07:03
Видно, Вы совсем не понимаете, чем объект wstring отличается от массива символов wchar_t*
C++
1
2
wstring name=line.path + line.filename;
remove(name.c_str());
См. http://www.cplusplus.com/reference/string/wstring/
1
Эксперт С++
1624 / 954 / 782
Регистрация: 06.02.2016
Сообщений: 2,452
Записей в блоге: 31
16.09.2018, 10:19
C++
1
2
#include <experimental/filesystem>
std::experimental::filesystem::remove(std::experimental::filesystem::path("Название"));
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.09.2018, 10:19
Помогаю со студенческими работами здесь

Дано полное имя файла, т.е путь к файлу, имя и расширение. Выделить с этого рядка имя файла без расширения/
C++

Дано полное имя файла, т.е путь к файлу, имя и расширение. Выделить с этого рядка имя файла без расширения
На с++

Запись в файл путь и имя файла
Имеется такой код string path = @&quot;E:\MyTest.txt&quot;; if (!File.Exists(path)) { ...

Написать командный файл, который принимает в качестве параметра полное имя файла...
написать командный файл, который: 1.принимает в качестве параметра полное имя файла( диск + каталог+имя) 2. вызывает файл 1.bat...

Дано полное имя файла, т.е путь к файлу, имя и расширение. Выделить из строки только имя первого католога
Помогите пожалуйста!!! Залание: Дано полное имя файла, т.е путь к файлу, имя и расширение. Выделить из строки только имя первого...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru