Win32 アプリケーションでファイルを開くことができるようにしたいと考えています。私が使用している方法は、「C:\MyFolder」などのエディット ボックスからルート パスを取得することです (これは に割り当てられていstrPathToSource
ます)。次に、「\source\Utilities\File.h」などの別の文字列を追加し、連結されたパスを新しい変数に保存しますstrPathToFile
。
したがってstrPathToFile
、「C:\MyFolder\source\Utilities\File.h」が含まれている必要があり、infile.open(strPathToFile)
.
関連するコードを以下に示します。
ifstream infile;
int bufSize = 1024;
LPTSTR strPathToSource = new TCHAR[bufSize];
GetDlgItemText(hWnd, IDC_MAIN_EDIT_FILEPATH, strPathToSource, bufSize); // Get text from edit box and assign to strPathToSource
const char* strPathToFile = char(strPathToSource) + PATH_TO_FILE;
infile.open(strPathToFile);
if(!infile)
{
log(hWnd, "File.h not found.");
return false;
}
は次PATH_TO_FILE
のように定義されます。
const char* PATH_TO_FILE = "\\source\\Utilities\\File.h";
私の問題は、常に「File.h not found」からログアウトしていることです。問題は連結にあると思います。
const char* strPathToFile = char(strPathToSource) + PATH_TO_FILE;
ステップスルーすると、strPathToSource
との値が本来PATH_TO_FILE
あるべき姿であることがわかりますが、連結された結果strPathToFile
は NULL 値であると私は信じています。