Файл C ++ открывается на windows всегда не работает - PullRequest
1 голос
/ 25 мая 2020

Я получил этот код из другого ответа на аналогичный вопрос, но я не могу понять, почему у меня это не работает. Test.csv находится в той же папке, что и скомпилированный файл .exe, но не находит его. Я пробовал использовать полный системный путь («C: \ Users \ hhv \ eclipse-workspace \ Oncemore \ Debug \ test.csv»), но мне все равно не удалось открыть csv.

cpp file open fails

Итак, я не понимаю, что происходит, потому что каждый другой пример, который я смотрел, выглядел так, как будто это должно работать. Пример: https://github.com/tpatil2/C-Programs/blob/master/RWcsv/rwcsv.cpp

c ++ чтение CSV-файла



#include <iostream>
#include <fstream>
#include <sstream>

#include <string>
#include <vector>
#include "load_symbol.h"
using namespace std;


bool load_symbols(){


     string line;                    /* string to hold each line */
     vector<vector<int>> array;      /* vector of vector<int> for 2d array */

     ifstream f ("test.csv");   /* open file */
        if (!f.is_open()) {     /* validate file open for reading */
            perror ("error while opening symbol file ");
            return false;
        }

        while (getline (f, line)) {         /* read each line */
            string val;                     /* string to hold value */
            vector<int> row;                /* vector for row of values */
            stringstream s (line);          /* stringstream to parse csv */
            while (getline (s, val, ','))   /* for each value */
                row.push_back (stoi(val));  /* convert to int, add to row */
            array.push_back (row);          /* add row to array */
        }
        f.close();

        cout << "complete array\n\n";
        for (auto& row : array) {           /* iterate over rows */
            for (auto& val : row)           /* iterate over vals */
                cout << val << "  ";        /* output value      */
            cout << "\n";                   /* tidy up with '\n' */
        }


        return true;


}

1 Ответ

1 голос
/ 25 мая 2020

Путь указывается относительно текущего рабочего каталога (в котором выполняется программа), а не исходного файла. Также, когда вы используете обратную косую черту в пути к файлу, вы должны избегать их следующим образом: "C: \\ Users \\ hhv \\ eclipse-workspace \\ Oncemore \\ Debug \\ test.csv"

...