Hello stack overflow community. I came here as a last resort because i probably made a stupid mistake i cannot see myself.
The question im asking is for some reason when i try to read a file with an absolute path(or relative, you can see i tried that in my code) it cannot read the file for some unknown reason(atleast to me). This is a small thing for a big project im working on. Thank you guys!
main.cpp
#include <iostream>
#include <fstream>
#include <filesystem>
#include <unistd.h>
#include <string>
std::string openf() {
    FILE* pipe = popen("zenity --file-selection", "r"); // open a pipe with zenity
    if (!pipe) return "ERROR"; // if failed then return "ERROR"
    char buffer[912]; // buffer to hold data
    std::string result = ""; // result that you add too
    while(!feof(pipe)) { // while not EOF read
        if(fgets(buffer, 912, pipe) != NULL) // get path and store it into buffer
            result += buffer; // add buffer to result
    }
    //I thought i needed to convert the absolute path to relative but i did not after all
    // char cwd[10000];
    // getcwd(cwd, 10000); // get cwd(current working directory)
    // result = std::filesystem::relative(result, cwd); // convert the absolute path to relative with cwd
    pclose(pipe); // cleanup
    return result;
}
std::string readf(std::string filename){
    std::string res;
    std::ifstream file;
    file.open(filename.c_str());
    if(file.is_open()) {
        while(file){
            res += file.get();
        }
    }else {
        std::cout << "failed to open file " + filename;
    }
    return res;
}
int main( void ){
    std::string file = openf();
    std::cout << file << std::endl;
    std::string str = readf(file);
    std::cout << str << std::endl;
    return 0;
}
output
/home/meepmorp/Code/Odin/test/test.odin
failed to open file /home/meepmorp/Code/Odin/test/test.odin
 
    