Advent of Code 2025, done in C++
1#include <cstdlib>
2#include <filesystem>
3#include <fstream>
4#include <iostream>
5#include <print>
6#include <string_view>
7#include <string>
8
9// DATA_FOLDER is injected by Meson so solutions do not have to care about paths.
10#ifndef DATA_FOLDER
11#error "DATA_FOLDER is not defined. Meson should inject it via cpp_args."
12#endif
13
14int main(int argc, char **argv) {
15 std::string_view mode = "real";
16 if (const char *env_mode = std::getenv("AOC_MODE")) {
17 mode = env_mode;
18 }
19 if (argc > 1) {
20 mode = argv[1];
21 }
22
23 std::println("Day 00 placeholder");
24 std::println("Mode: {}", mode);
25 std::println("Data folder: {}", DATA_FOLDER);
26
27 const std::filesystem::path data_root{DATA_FOLDER};
28 const auto input_path = data_root / "input.txt";
29
30 std::ifstream input{input_path};
31 if (!input.is_open()) {
32 std::println(std::cerr, "Failed to open {}", input_path.string());
33 return EXIT_FAILURE;
34 }
35
36 std::println("Contents of {}:", input_path.string());
37 for (std::string line; std::getline(input, line);) {
38 std::println(" {}", line);
39 }
40
41 return EXIT_SUCCESS;
42}