У меня есть кусок кода для загрузки файла с сервера. Однако из-за ограничений сервера я не могу поместить файл .exe на сервер. Поэтому я переименовываю свой файл XXX.exe в XXX.alt (просто случайное расширение) и помещаю его на сервер.
Теперь мой код может загрузить XXX.alt, но как я могу изменить имя файла с XXX.alt обратно на XXX.exe, когда в среде QT?
Просто используйте функцию переименования из ‘stdio.h’.
char oldname[] ="XXX.alt";
char newname[] ="XXX.exe";
result= rename( oldname , newname );
if ( result == 0 )
puts ( "File successfully renamed" );
else
perror( "Error renaming file" );
Используйте QFileInfo, чтобы получить путь без последнего расширения, затем добавьте новое расширение.
QFileInfo info(fileName);
QString strNewName = info.path() + "/" + info.completeBaseName() + ".exe";
Одним из решений является поиск последнего '.'
и замените подстроку из этой позиции в конец нужной подстрокой.
Как это сделать, есть много способов использовать оба std::string
а также QString
, поскольку оба поддерживают поиск символов в строке (и также выполняют поиск от конца до начала) и заменяют подстроки.
Предпочитаю использовать baseName ()
QFileInfo info(fileName);
QString strNewName = info.path() + info.baseName() + ".exe";
QString QFileInfo::completeBaseName () const
Returns file name with shortest extension removed (file.tar.gz -> file.tar)
QString QFileInfo::baseName () const
Returns file name with longest extension removed (file.tar.gz -> file)