2009-02-08 1 views
2

Это должно быть довольно тривиальной проблемой. Я пытаюсь открыть поток из потока, используя std :: string (или std :: wstring) и имею проблемы с тем, чтобы это работало без беспорядочного преобразования.Открытие файла с помощью std :: string

std::string path = ".../file.txt"; 

ofstream output; 

output.open(path); 

В идеале я не хочу, чтобы преобразовать это вручную или включать с-стиль указателей полукокса, если есть более хороший способ сделать это?

ответ

9

В строке пути используйте две точки вместо трех.

Также вы можете использовать метод 'c_str()' для строки, чтобы получить базовую строку C.

output.open(path.c_str()); 
+0

пятно сверху, спасибо. – Dan

0

Я боюсь, что это просто невозможно. Вы должны использовать c_str, и да, это отстой.

Кстати, использование char * также означает, что fstream не поддерживает имена файлов Unicode ... позор.

+0

wfstream для std :: wstring кто-нибудь? – KTC

+0

Нет необходимости в специальном типе потока, просто перегрузите open(), чтобы взять std :: wstring. – KeithB

+0

Конструктор basic_fstream принимает _only_ const char * (never wchar_t). См. Стандарт: 27.8.1.6 –