Я говорю, если сомневаешься, упрости.
Когда что-то кажется слишком сложным и на первый взгляд не имеет смысла, найдите способы разбить его на более мелкие кусочки, которые имеют смысл для вас.
ofstream fout(getenv("OUTPUT_PATH"));
можно разбить на две части.
auto res = getenv("OUTPUT_PATH");
ofstream fout(res);
Вы можете посмотреть документацию в getenv()
, чтобы понять, что делает первая строка. В вашем случае он возвращает значение переменной окружения OUTPUT_PATH
. После выполнения строки значение будет res
.
Вы можете поискать документацию для конструкторов ofstream
, чтобы понять, что делает вторая строка. В вашем случае он создает объект ofstream
, используя значение переменной среды OUTPUT_PATH
.
После этой строки вы можете использовать объект fout
для записи в поток. Вывод будет доступен в файле, определяемом переменной среды OUTPUT_PATH
.
Причина, по которой Hacker Rank
делает это, заключается в том, что у них 100 или 1000 пользователей используют один и тот же фрагмент кода в одно и то же время. Чтобы каждый прогон использовал уникальный выходной файл, перед запуском кода они устанавливают уникальное имя OUTPUT_PATH
Это приведет к тому, что вывод будет помещен в уникальный файл. Код оболочки на Hacker Rank
затем сравнит вывод из вашего файла с ожидаемым выводом.