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

170
25 мая 2022, 03:20
$ 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);
}
Answer 1

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

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

Реализация быстрой сортировки C++

Пытаюсь реализовать алгоритм быстрой сортировки, но что-то идет не такВроде пишу прямо по книге (Кормен), но алгоритм работает некорректно...

165
В чём измеряется размер файла?

В чём измеряется размер файла?

В доках сказано, что file_size возвращает результат в байтахИмеются в виду октеты (8 бит) или количество char-ов?

198
Что обозначает код [_=&amp;*+[]{}](){}()?

Что обозначает код [_=&*+[]{}](){}()?

Как расшифровать этот код?

256
C++ CLI - ссылка на неразрешенную лексему

C++ CLI - ссылка на неразрешенную лексему

Данный код не выполняется в проекте:

156