открыть файл по его полному пути

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

    string address;
    cin>>address;
    ifstream file(address);

Как открыть файл таким образом?


person Community    schedule 18.06.2013    source источник


Ответы (2)


На самом деле этот код работает как есть — по крайней мере, в текущей версии C++11.

Перед этим вам нужно преобразовать строку в строку в стиле C:

ifstream file(address.c_str());

Хотя вам следует остерегаться пробелов в пути к файлу, как упоминал CapelliC в своем (теперь удаленном) ответе; чтобы пользователь мог вводить пути с пробелами (например, «~/some file.txt»), используйте std::getline вместо оператора потока:

getline(cin, address);
person Konrad Rudolph    schedule 18.06.2013

возможно проблема может заключаться в наличии пробела в address.

Попробуйте вместо этого использовать getline(cin, address) (спасибо Конраду за обнаружение проблемы, мой C++ немного заржавел...)

person CapelliC    schedule 18.06.2013
comment
Вы не можете использовать std::cin::getline на std::string. - person Konrad Rudolph; 18.06.2013
comment
Да, я удалю его снова! - person CapelliC; 18.06.2013