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
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.