Есть такой код:
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
. Можно прибавить и строковый литерал типа "/"
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть такая функция, которая ищет файлы в выбранном каталоге и его подкаталогах, а потом записывает пути к файлам в datatxt
Сказано, что read это системный вызов, и его преимущество перед функциями из других библиотек, в том, что по определению системный вызов должен...
Функция должна сравнивать параметры x и y и присваивать r значение большегоКак можно её реализовать так, чтобы всё не ломалось при передаче...