Вы можете открыть файл как дескриптор файла, используя fopen и O_CREAT | O_EXCL, а затем преобразовать его в поток, используя
__gnu_cxx::stdio_filebuf<char> filebuf(posix_handle, std::ios::out);
ostream os(&filebuf);
это использует нестандартное расширение, определенное в.
Если у кого-то есть лучшее решение, я действительно хочу знать!