Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [Qt4] абсолютный путь к файлу


Автор: ISerg1986 7.2.2014, 12:08
Здравствуйте!
Написал программу, которая читает из файла.
Файл с данными myfile.txt находится в папке программы. Как сделать так, чтобы путь к файлу был относительным?
В идеале, нужно кроссплатформенное решение для "пути". Код должен работать  в windows и  Линукс.


Часть кода
Код

    //Чтение данных из файла
    QStringList strArray;
 QFile file("F:\\QT\\MyQtProjects\\read_from_file\\myfile.txt"); //Относительный путь
   //   QFile file("./myfile.txt"); //а как указать абсолютный путь для виндовс?
    if (!file.open(QIODevice::ReadOnly)) return;
    QTextStream stream(&file);
    while(!stream.atEnd())
    {
        strArray.append(stream.readLine());
    }

Автор: vinter 7.2.2014, 14:21
моя твоя не понимать, у тебя в коде полный путь. Изъясняйся яснее.

Автор: ISerg1986 7.2.2014, 15:58
Цитата(vinter @  7.2.2014,  14:21 Найти цитируемый пост)
моя твоя не понимать, у тебя в коде полный путь. Изъясняйся яснее. 

Исправил первое сообщение.
Для Линукс 
QFile file("./myfile.txt"); - относительный путь
а как сделать относительный путь для windows? Есть кроссплатформенное решение?

Автор: vinter 7.2.2014, 16:57
Я всё равно не понимаю, чего ты хочешь, но посмотри QFileInfo - этот класс умеет многое. Вообще говоря сокращения типа . и .. они универсальны и кросс-платформенны, по крайней мере для базовых ОС,

Автор: borisbn 8.2.2014, 08:22
ISerg1986, в студии по-умолчанию при запуске в Debug текущим каталогом является не какталог, в котором находится exe-шник, а каталог, в котором лежит .vsproj.
Чтобы сделать текущим каталог exe-шника нужно указать в настройках проекта в разделе "Debugging/Working directory" == "$TargetPath"
Студия дома не установлена, по-этому могу ошибаться в названиях, но, думаю, ты понял

Автор: ALEXRAGE 9.2.2014, 11:27
Цитата(ISerg1986 @  7.2.2014,  15:58 Найти цитируемый пост)
QFile file("./myfile.txt"); - относительный путь
а как сделать относительный путь для windows


Не знаю как в студии, а в qtcreator такая запись пути работает и в Linux и в Windows.

А вот: "F:\\QT\\MyQtProjects\\read_from_file\\myfile.txt" - будет работать только в Windows. Linux не поймет.

Получить aplication dir можно так:
Код

qApp->applicationDirPath()

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)