Чтение из файла на c++

Возникла проблема с чтением текста из файла на c++. Как я понял, чтобы исполняемый файл нашел нужный документ, необходимо узнать абсолютный путь до исполняемого файла и сформировать абсолютный путь до нужного документа. Неужели нет менее костыльного способа сделать это? Такое решение используется повсеместно? Может быть, проще перенести текущую директорию в папку приложения, если это возможно, и использовать относительный путь?


Ответы (1 шт):

Автор решения: schmidt9

Если файл находится в той же директории, что и консольное приложение, то путь можно получить так (без необходимости переходить сначала в каталог с приложением)

#include <iostream>
#include <string>

int main(int argc, const char * argv[]) {

    auto appPath = std::string(argv[0]);
    auto lastSlashIndex = appPath.find_last_of("\\/");
    
    if (lastSlashIndex == std::string::npos) {
        return -1;
    }
    
    appPath.erase(appPath.begin() + lastSlashIndex, appPath.end());
    
    std::cout << appPath.c_str() << std::endl;
    
    auto filePath = appPath + "/test.txt";
    
    std::cout << filePath.c_str() << std::endl;
    
    // read file at filePath ...
    
    return 0;
}
→ Ссылка