Загрузить файл из предыдущих окон каталога c ++ [duplicate]

Ссылка NullReferenceException или Object, не установленная на экземпляр объекта, возникает, когда объект класса, который вы пытаетесь использовать, не создается. Например:

Предположим, что у вас есть класс с именем Student.

public class Student
{
    private string FirstName;
    private string LastName;
    public string GetFullName()
    {
        return FirstName + LastName;
    }
}

Теперь рассмотрим другой класс, в котором вы пытаетесь получить полное имя учащегося.

public class StudentInfo
{      
    public string GetStudentName()
    {
        Student s;
        string fullname = s.GetFullName();
        return fullname;
    }        
}

Как видно из вышеприведенного кода, оператор Student s - объявляет только переменную типа Student, обратите внимание, что класс Student не создается в этой точке. Следовательно, когда выполняется выполнение инструкции s.GetFullName (), она выкинет исключение NullReferenceException.

68
задан sas4740 9 June 2011 в 20:01
поделиться

4 ответа

Проверьте QDir для этого:

QString path = QDir(dirPath).filePath(fileName);
32
ответ дан Michael Burr 24 August 2018 в 16:09
поделиться

Как и в ответе @ user405725 (но не используя boost), и упомянутом в комментарии @ildjarn, эта функция доступна как часть std :: experimental :: filesystem . Следующий код компилируется с использованием Microsoft Visual Studio 2015 Community Edition:

#include <iostream>
#include <filesystem>
namespace fs = std::experimental::filesystem;

int main() 
{
    fs::path dir ("/tmp");
    fs::path file ("foo.txt");
    fs::path full_path = dir / file;
    std::cout << full_path << std::endl;
    return 0;
}
14
ответ дан Azeem 24 August 2018 в 16:09
поделиться

С C ++ 11 и Qt вы можете это сделать:

QString join(const QString& v) {
    return v;
}

template<typename... Args>
QString join(const QString& first, Args... args) {
    return QDir(first).filePath(join(args...));
}

Использование:

QString path = join("/tmp", "dir", "file"); // /tmp/dir/file
3
ответ дан kainjow 24 August 2018 в 16:09
поделиться

Если вы хотите сделать это с помощью Qt, вы можете использовать конструктор QFileInfo:

QFileInfo fi( QDir("/tmp"), "file" );
QString path = fi.absoluteFilePath();
86
ответ дан Azeem 24 August 2018 в 16:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: