LINUX.ORG.RU

Работа со строкой


0

0
Привет. Есть есть имя файла с путем. Содержится это дела в QString filename

filename выглядит так "/home/user/doc/file.txt" Мне низ всего это путя нужно получить имя файла без расширения. Т.е. "file" Как это сделать средствами QT? Или если в QT нельзя, то вообще, как это сделать?

Спасибо!

anonymous
Можно воспользоватся  QUrl. Скорее всего к пути надо добавить file://
olegk ★★
()
man strrchr (если в Си)

std::string::rfind (в Си++)

tailgunner ★★★★★
()
если воспользоваться help
Example:
QFileInfo fi( "/tmp/archive.tar.gz" );
QString name = fi.fileName(); // name = "archive.tar.gz"
rh9
()
Ответ на: комментарий от rh9
Не совсем так, задача была получить имя файла без расширения. Вот оно:

QString name = QFileInfo ("/home/user/doc/file.txt").baseName ();

Результат будет просто "file".

Shmuma
()
Спасибо Всем... Вот QFileInfo умеет откидывать путь до файла и сохраняет его имя... А можно ли сделать наоборот.. Т.е. оставить путь к файлу, а имя файла убрать...
anonymous
()
Ответ на: комментарий от anonymous
Открой, же документацию в конце концов. Ее даже читать не надо, просто по-диагонали просмотреть список методов.

QFileInfo::dirPath() делает как раз то что тебе надо.

Shmuma
()
Ответ на: комментарий от Shmuma
Документацию я читал. Вот почему я задал вопрос.

QProcess* cmd; // чтоб было понятно, что такое cmd

QString filename; // тут уже лежит имя файла с путем к нему. QString tmppath; // тут хочу хранить путь до файла без его имени. QFileInfo path(filename);

tmppath = path.dirPath(); // вроде как, по докам сейчас в tmppath должен лежать путь до файла cmd->addArgument("ls"); cmd->addArgument(tmppath);

После этого в Stdout ничего нет.

Но если делать так: cmd->addArgument("cat"); cmd->addArgument(filename); То все работает, сut выводит все в Stdout и я его читаю. т.е. QProcess отробатывает.

Может я неправильно использую QFileInfo::dirPath() ?

anonymous
()
Ответ на: комментарий от anonymous
ОЙ... Исправляюсь 

Документацию я читал. Вот почему я задал вопрос. 

QProcess* cmd;     // чтоб было понятно, что такое cmd

QString filename;  // тут уже лежит имя файла с путем к нему.
QString tmppath;   // тут хочу хранить путь до файла без его имени. 
QFileInfo path(filename);

tmppath = path.dirPath();  // вроде как, по докам сейчас в tmppath должен лежать путь до файла
 
cmd->addArgument("ls");
cmd->addArgument(tmppath);

После этого в Stdout ничего нет. 

Но если делать так:
cmd->addArgument("cat");
cmd->addArgument(filename);
То все работает, сut выводит все в Stdout и я его читаю. т.е. 
QProcess отробатывает. 

Может я неправильно использую QFileInfo::dirPath() ? 
anonymous
()
Ответ на: комментарий от anonymous
QString QFileInfo::baseName () const Returns the base name of the file without the path. The base name consists of all characters in the file up to (but not including) the first '.' character. Example: QFileInfo fi("/tmp/archive.tar.gz"); QString base = fi.baseName(); // base = "archive"
mihelson
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.