std::string と const TCHAR* の間で変換するために、ATL 変換マクロ A2T を使用しています。次に、ファイルを解析するための追加関数に TCHAR* をフィードします。私が次のことをすると、うまくいきます:
USES_CONVERSION;
const TCHAR* fileName = A2T(file.c_str());
foo(filename);
ただし、空のチェックをリファクタリングして、新しい関数を使用して変換しようとしました。
const TCHAR* StringToTChar(const string s)
{
/* To be added in
if(s.empty())
{
return NULL;
}
*/
USES_CONVERSION;
const TCHAR *ts= A2T(s.c_str());//Using ATL, convert to TCHAR*
// assert(ts!=NULL); to be added
return ts;
}
関数 foo(filename) は、私が与えたファイルを開くことができないと言います。これは、ファイル名変数の形式が正しくないためだと思います。このコードに何か問題がありますか?
ありがとう、
エリック
編集: 入力文字列は「C:\abc\build\Dvv\ggg.trc」で、foo が受け取る文字列は「C:\abc\buivv\ggg」のようです。