Я пытаюсь прочитать каждую строку из файла .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, а затем открыть файл. , Я также отключил пользовательский ввод и ввел абсолютный путь, где каждая папка была разделена двумя обратными слешами \\
вместо одной. Я также скопировал файл в папку, в которой находится скомпилированная программа, и дал программе относительный путь к файлу в качестве входных данных, но это также не помогло.
Любая форма помощи очень ценится!