Проблемы с открытием файла в C ++ - PullRequest
0 голосов
/ 11 января 2012

У меня проблемы с открытием файла для чтения, и я не могу понять, что я делаю неправильно, возможно, что-то не так с тем, как я указываю свой путь, но я не знаю.

/*
output:
Where is the conversion table ?
/Users/awiebe/Documents/Langara\ Assignments/CPSC1160/CURRENCYCODES.txt 
Unable to open file
*/


StringFloatMap readFile(string path)
{
    //fstream filestr ("test.txt", fstream::in | fstream::out);
    ifstream filestr;
    const char* cPath = path.c_str();
    filestr.open(cPath);

    if (filestr.is_open())
    {
        filestr.close();
    }
    else
    {
        cout << "Unable to open file" << endl;
    }
/*…*/
}

Ответы [ 3 ]

1 голос
/ 11 января 2012

Вам не нужно экранировать символ пробела в пути (например, вы можете удалить \ в вашем имени файла).

0 голосов
/ 11 января 2012

Просто избавьтесь от «\» и укажите ему путь: e.g.:

/ Пользователи / awiebe / Документы / Langara Assignments / CPSC1160 / CURRENCYCODES.txt

Так как вы используете строковый класс, нет необходимости использовать escape-последовательности для пробелов.

0 голосов
/ 11 января 2012

Переменная cPath не нужна (но, возможно, хороша для отладки)

Я бы предложил распечатать сообщение об ошибке. Добавить

#include <cstring>
#include <cerrno>

и

cout << "Unable to open file:" << errno << ':' << strerror(errno) << std::endl;
...