@Bergis

Как решить проблему с преобразованием переменной?

У меня есть код:
#include <string>
#include <iostream>
#include <filesystem>
#include <stdio.h> 
#include <direct.h>
#include <vector>
#include <iterator>
#include <conio.h>
#include <windows.h>

namespace fs = std::filesystem;
using namespace std;



std::string check_dir()
{
    char current_work_dir[FILENAME_MAX];
    std::string path = _getcwd(current_work_dir, sizeof(current_work_dir));
    std::cout << path << std::endl;
    return path;
}




int zip(string path)
{
    std::string zi = "\7za.exe\ e ";
    system(zi + path);
    return 1;
}   


int main() {
    const fs::path startPath{check_dir()};
    const std::string extension{ ".zip" };
    std::vector fileList(fs::directory_iterator(startPath), {});
    for (const fs::directory_entry& de : fileList) {
        std::string p{ de.path().string() };
        if (p.substr(p.size() - extension.size(), extension.size()) == extension)
            std::cout << p << "\n";
            zip(p);

            
     
    }

    
    _getch();
    return 0;
}

Он выводит ошибки при компиляции :
1>------ Сборка начата: проект: BroBot install, Конфигурация: Debug Win32 ------
1>BroBot install.cpp
1>C:\Users\Mike\Desktop\install\install\install.cpp(32,22): warning C4129:: неизвестная escape-последовательность
1>C:\Users\Mike\Desktop\install\install\install.cpp(33,21): error C2664: "int system(const char *)": невозможно преобразовать аргумент 1 из "std::basic_string<char,std::char_traits<char>,std::allocator<char>>" в "const char *"
1>C:\Users\Mike\Desktop\install\install\install.cpp(33,15): message : Для выполнения данного преобразования нет доступного оператора преобразования, определенного пользователем, или вызов оператора невозможен
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\stdlib.h(1218,26): message : см. объявление "system"
1>Сборка проекта "install.vcxproj" завершена с ошибкой.
========== Сборка: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========


Подскажите как можно исправить этот баг
  • Вопрос задан
  • 235 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
error C2664: "int system(const char *)": невозможно преобразовать аргумент 1 из "std::basic_string,std::allocator>" в "const char *"
как можно исправить этот баг

system((zi + path).c_str());
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы