VC++でのパス取得の際の問題対処

MFCのアプリケーション上で入力するファイルのパスを取得した際のちょっとした問題。

そのままファイルパスを取得するとディレクトリの区切りが"\"だけであり、
パスを文字列で扱う際には"\"から"\\"に変換してやらないといけない。
(表現が正しいのだろうか…)

調べたところ、CStringT::Replaceを使ってやると簡単に文字列置換が可能となるらしい。

msdnから引用

// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;

CAtlString strBang(_T("Everybody likes epee fencing"));
int n = strBang.Replace(_T("epee"), _T("foil"));
ASSERT(n == 1);   

CStringT Class | Microsoft Docs

今回の場合は、Replace()の引数を

str.Replace(_T("\\"), _T("\\\\"))

としてやったらうまく変換できたみたい。便利ですね。