モダン第9章:【C++17】クロスプラットフォームファイル操作:std::filesystem

Windowsの「\」とUnixの「/」問題の終焉!OSネイティブAPI依存からの完全脱却

ゲーム開発において、セーブデータの保存やアセット(テクスチャ・BGM・ステージ定義)の探索は必須の処理です。しかし、C++03/11の標準ライブラリには「ディレクトリ内のファイル一覧を取得する」機能すら存在せず、Windowsなら Win32 API(FindFirstFile / FindNextFile)、Mac/Linuxなら POSIX(opendir / readdir)と、OSごとの生APIを #ifdef で泥臭く分岐して書くしかありませんでした。パス区切り文字の違い(Windowsの「\」とUnixの「/」)によるバグも絶えませんでした。C++17で標準化された【std::filesystem】は、この長年の悪夢に完全な終止符を打ちました。本章では、スマートなパス結合演算子(/)、ディレクトリ走査イテレータによるアセット自動検出、そしてゲーム業界の例外禁止環境に必須の非例外版エラーハンドリング(std::error_code)を用いた安全なセーブデータ保護手法を体得します。


🐻‍❄️ シロクマC++ラボ インタラクティブ学習システム

JavaScriptを実行すると、ブラウザ内インベーダーゲームエミュレータ、メモリマップ可視化、UMLクラス図、対話型解説、理解度クイズが起動します。

インタラクティブ学習を開始する →