Есть такой код:
cout<<"Type path - ";
char path[NAME_MAX];
cin >> path;
DIR *check_dir;
check_dir = opendir(path);
if(check_dir){
cout << "Какой файл создать? - ";
char filename[NAME_MAX];
cin>>filename;
filename = path + "/" + filename; //эта строка помечается как ошибка.
ifstream file;
file.open(filename);
if(file){
cout<< "Exixts";
}else{
cout<<"Not exists";
}
}else{
cout << "Directiry not found";
}
return 0;
Нужно склеить:
char + "/" + char;
Есть ли решение?
Я пытаюсь донести до читающего проблему: Если я буду использовать string, то будет ошибка при открытии директории. По какой-то причине(мне не известной, opendir принимает только const char* как параметр) Вот что получается при попытке использовать string:
cout<<"Type path - ";
string path;
cin >> path;
DIR *check_dir;
check_dir = opendir(path);//Эта строка становится ошибкой
if(check_dir){
cout << "Какой файл создать? - ";
string filename;
cin>>filename;
filename = path + "/" + filename;
ifstream file;
file.open(filename);
if(file){
cout<< "Exixts";
}else{
cout<<"Not exists";
}
}else{
cout << "Directiry not found";
}
return 0;
error: cannot convert ‘std::__cxx11::string {aka std::__cxx11::basic_string<char>}’ to ‘const char*’ for argument ‘1’ to ‘DIR* opendir(const char*)’
Вы в строке:
filename = path + "/" + filename;
пытаетесь сложить два указателя на char и строковой литерал. Эта операция в принципе невозможна в данном виде. Для простой конкатенации, раз вы уж пишете на с++, следует использовать класс string. Тогда конкотенация будет выглядеть как то так:
std::string str = path;
str += "/";
str += filename;
Это если ваши строки (path, filename) оставить в той же форме (char *). Если же их тоже перевести в string то можно и так:
std::string str = path + '/' + filename.
PS Из string можно вернуть текст как указатель на массив char. Для этого нужно использовать метод c_str()
std::string и забудьте об этой головной боли.char * strcat( char * destptr, const char * srcptr );. Эта функция добавляет информацию по указателю srcptr к информации по указателю destptr. Можно прибавить и строковый литерал типа "/"Сборка персонального компьютера от Artline: умный выбор для современных пользователей