Ошибка при компиляции в g++

$ g++ Scan.cpp -o Scan

Scan.cpp: In function ‘int main()’:
Scan.cpp:13:9: error: cannot convert ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} to ‘const char*’
   13 |  system(ScanCom);
      |         ^~~~~~~
      |         |
      |         std::string {aka std::__cxx11::basic_string<char>}

Код

#include <iostream>
#include <string>
#include <stdlib.h>

using namespace std;

int main()
{
    string file;
    string fileS = file + ".jpg";
    string ScanCom = "scanimage -p > /home/themihai/scans/" + fileS;
    cout << "FileName:";
    cin >> file;
    system(ScanCom);
}

Ответы (1 шт):

Автор решения: EOF

Пойдём по порядку:

  1. Это не ошибка, но stdlib.h - это файл из С. В С++ используйте cstdlib.
  2. На момент выполнения строки string fileS = file + ".jpg";, переменная file содержит в себе пустую строку. Читайте строку до того, как будете её использовать.
  3. Функция system ожидает char* или const char*, а не обьект string. Метод c_str() может Вам помочь. Вызвайте так: system(ScanCom.c_str());.
→ Ссылка