[C++] 118 FLTK : 色表示履歴をCSVファイルに保存

[M1 Mac, Big Sur 11.6.8, clang 13.0.0, NO IDE]

色表示履歴(2次元vector)をホームディレクトリ直下のアプリ用ディレクトリにCSVファイルとして保存できるようにしました。

前々回記事で作成した静的ライブラリのconst char*版 csvProcessChar.aを使用しています。今のところappファイルのサイズは1.8MBです。

ファイル名は仮にtest.csvとしていますが、2208011200_FavList.csvのように日時を付加したファイル名にしたいところです。

さすがに秒数まで加えると長すぎるので付けません。ただ同じ分内で複数作成した時に上書きにならないよう工夫が必要になります。

static Fl_Menu_Item	items[] = {
        { "★", 0, 0, 0, FL_SUBMENU },
        { "読込", 0, loadFavList, 0, 0 },
        { "保存", 0, saveFavList, 0, 0 },
        { "消去", 0, deleteFavList, 0, 0 },
        { 0 },
        { "履歴", 0, 0, 0, FL_SUBMENU },
        { "消去", 0, deleteHistory, 0, 0 },
        { 0 },        
    #ifdef DEV
        { "開発", 0, 0, 0, FL_SUBMENU },
        { "開発モード", 0, showSubWindow, 0, 0 },
        { 0 }
    #else
    #endif
    };
    
Fl_Sys_Menu_Bar *menubar;
    menubar = new Fl_Sys_Menu_Bar(0, 0, 60, 20);
    menubar->box(FL_FLAT_BOX);
    menubar->menu(items);
--------------------------------------------------
#include <csvProcessChar.h>
#include <filesystem>

namespace fs = std::filesystem;
using std::cout; using std::endl;
using std::string; using std::to_string;

vector<vector<const char*>> selectColorList;

void saveFavList(Fl_Widget*, void*){
    cout << "saveFavList" << endl;

    homedir = getenv("HOME");
    cout << "homedir " << homedir << endl;

    string cs = "/ColorSample";
    string appdir = string(homedir) + cs;

    if (!fs::exists(appdir)){
        fs::create_directory(appdir);
    }

    string path = appdir + "/test.csv";
    csvProcessChar::make(path,selectColorList);
}