A char *
- это указатель на адрес памяти, содержащий символ, и часто используется для c -строк.
A char **
- это указатель на адрес памяти, содержащий указатель на адрес памяти, содержащий символ, и часто используется для массивов c -строк.
Ваша подпись main
, если не является допустимой формой, поскольку не существует формы main
, которая принимает только указатель символа. Форма, которую вы, скорее всего, ищете: int main( int argc, int **argv )
. Он принимает два параметра: argc
- количество аргументов, переданных программе, и argv
, содержащий параметры в виде c -строк, переданных программе.
В основном методе как правило, вы должны убедиться, что argc
является правильным, т.е. у вас есть правильное количество параметров, переданных в вашу функцию (примечание: всегда, по крайней мере, 1 будет argv[0]
как имя программы).
std::string a = argv[1]
это нормально, и это приведет к преобразованию строки, на которую указывает argv
, в строку. При вызове ваших функций у вас есть char functionu(argv);
. Вы захотите удалить char
из этой строки; эффективно, как это написано, вы пытаетесь создать переменную char
с именем functionu
, которая имеет начальное значение argv
.
Каждая из ваших функций, вместо того, чтобы принимать char *
должен принимать char **
, тогда, когда у вас есть что-то вроде char file = argv[3];
, вы захотите изменить это на char *file = argv[3];
или std::string file = argv[3];