C++でcsvファイルを読み込む(ファイルパス取得編)
今回はcsvファイルの読み込み処理について書いてみようと思います。
csvファイルを読み込む際の処理の流れとしては
1.読み込む対象のファイルパスを取得
2.ファイルを読み込む
3.読み込んだ内容を配列に落とし込む
というようになります。まずはファイルのパスを取得する所からです。
今回はdllファイルと同じ階層にあるcsvというフォルダ内のsample.csvを開くと仮定してコードを書いていきます。
#include<windows.h>
#include<filesystem>
#include<stdlib.h>
using namespace std
//ファイルパス取得
void GetCsvFilePath(HINSTANCE hModule)
{
TCHAR dllpath[_MAX_PATH];//dllファイルのパス
//dllファイルのパスを取得
GetModuleFileName(
hModule,//インスタンスハンドル(dllMain内で取得可)
dllpath,//dllファイルのパスを格納する
sizeof(dllpath)
);
//csvファイルのパスを設定
filesystem::path csvpath(dllpath);
csvpath.remove_filename();
csvpath.append(csv);
csvpath.append(sample.csv);
}
自分はこんな感じで書いています。
GetModuleFileNameで取得したパスからファイル名を消して目当てのパスに変更します。
filesystemはC++の言語標準をC++17以降にしていないと対応していないので注意です。
csvに限らずファイルパスの取得はいろいろな場面で使えると思うので覚えておいて損はないと思います。
ファイルを読み込んで配列に落としこむやり方はまた今度書きます。