Не могу открыть файл правильно в C ++ - PullRequest
2 голосов
/ 22 марта 2020

Я пытаюсь прочитать каждую строку из файла .geom и сохранить его в строку. Пользователь должен ввести правильный (абсолютный) путь к файлу, а затем до сих пор должен получить содержимое файла .geom, распечатанного на консоли. Проблема в том, что при любых обстоятельствах невозможно открыть файл с помощью моей программы на С ++. Каждый раз, когда я проверяю, открывается ли файл через is_open(), он отвечает ложным. Программа, моя IDE и файл .geom находятся на одном диске, и в настоящее время я использую windows. IDE, которую я использую, - это Codeblocks, а исполняемый файл - это встроенный.

Это мой полный код до сих пор:

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

//a function to check if the given file has the .geom extension
bool isGeom(string file){
  if(file.substr(file.find_last_of(".") + 1) == "geom") {
    return true;
  } else {
    return false;
  }
}

//main func
int main()
{
    string filepath, geomInput, line;

    cout << "----- GeomView2obj -----" << endl;
    cout << "Please enter a valid file path to a .geom file to convert it to an .obj file: \n" << endl;
    //get file path by user
    getline(cin, filepath);

    //declare stream and open file if possible
    ifstream geomFile (filepath.c_str());

    if(!geomFile.is_open()){
        cout << "\nERR: The given file path is invalid or the file does not exist!" << endl;
        return 1;
    }
    if(!isGeom(filepath)){
        cout << "\nERR: The given file is not a .geom file!" << endl;
        return 1;
    }
    //read chars from geom file
    while(getline(geomFile, line)){
        geomInput.append(line + "\n");
    }

    //print string --- DELETE
    cout << geomInput;

    geomFile.close();
    return 0;
}

Я также попытался сначала объявить свой ifstream, а затем открыть файл. , Я также отключил пользовательский ввод и ввел абсолютный путь, где каждая папка была разделена двумя обратными слешами \\ вместо одной. Я также скопировал файл в папку, в которой находится скомпилированная программа, и дал программе относительный путь к файлу в качестве входных данных, но это также не помогло.

Любая форма помощи очень ценится!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...