1

ええと、私はc ++に非常に慣れていないので、c ++の基本的な理解を与えてくれたいくつかのプロジェクトの後で簡単なことをすることにしました(いいえ、Hello Worldはカウントされません)、%にフォルダーを作成したいだけですappdata%と私はこれを行う必要があると考えました

void MakeFolder()
{
LPCTSTR appdata = getenv("APPDATA");
char *appchar = getenv("APPDATA");
size_t sizeApp = sizeof(appchar) + 8;
LPCTSTR folder = "/Folder";
StringCchCat(appdata, sizeApp, folder);
CreateDirectory (appdata,NULL);
}

しかし、「StringCchCat:識別子が見つかりません」と表示され、STDDEF.hをすでに含めており、エラーコードは変更されません。しかし、コード自体がとにかく機能するかどうかはわかりません...

4

2 に答える 2

4

StringCchCatで宣言されてい<strsafe.h>ます; そのヘッダーを含める必要があります。

しかし...あなたはC++に慣れていないので、C文字列をいじらないでください。使用std::string

char const* const raw_appdata = getenv("APPDATA");
if (raw_appdata == nullptr)
{
    // Handle error
}

std::string const appdata = raw_appdata;
std::string const folder  = appdata + "\\Folder";

if (CreateDirectory(appdata.c_str(), nullptr) == FALSE)
{
    // Handle error
}
于 2012-08-23T22:41:18.490 に答える
0

一般に、StringCchCatを使用するには、Strsafe.hを含める必要があります

http://msdn.microsoft.com/en-us/library/windows/desktop/ms647518(v=vs.85).aspxを参照してください

StringCchCatを使用した場合の問題は、ソースバッファー(appdata)がappdaaとフォルダーを保持するのに十分な大きさではない可能性があることです。LPCSTRをstd::stringに変換し、文字列を一緒に追加して(LPCTSTRからstd :: stringに変換する方法を参照)、必要に応じてstring.c_str()を呼び出すことで、作業を大幅に楽にすることができます。 constchar*。

于 2012-08-23T22:44:01.847 に答える