Переносного пути нет. Однако у определенных платформ иногда есть способы сделать это.
В Windows, если вы можете получить HANDLE файла (например, тот, который вы получаете из :: CreateFile ()), вы можете получить путь к нему, используя что-то вроде ZwQueryInformationFile ().
Из ФАЙЛА * вы можете получить идентификатор файла (в стиле Unix), используя _fileno (). Затем вызовите _get_oshandle (), чтобы получить РУЧКУ.
Не уверен, как это сделать с помощью std :: ofstream, но вы можете исследовать это.
Не уверен, как это сделать на других ОС, но это возможно.