Не ясно, нужен ли текущий рабочий каталог или путь к каталогу, содержащему исполняемый файл.
Большинство ответов, кажется, отвечают последнему.
Но для первой и второй части вопроса о создании файла стандарт C ++ 17 теперь включает библиотеку файловой системы, что значительно упрощает это:
#include <filesystem>
#include <iostream>
std::filesystem::path cwd = std::filesystem::current_path() / "filename.txt";
std::ofstream file(cwd.string());
file.close();
Это выбирает текущий рабочий каталог, добавляет имя файла к пути и создает пустой файл. Обратите внимание, что объект path заботится об обработке зависимого пути os, поэтому cwd.string () возвращает строку зависимого пути os. Neato.