マッピィ Techlog

日々思うこと

【C++】GetPrivateProfileStringの注意点

パラメータを読み込む時に、よくGetPrivateProfileString関数を使っています。
仕様を公式から抜粋すると

GetPrivateProfileString 関数

DWORD GetPrivateProfileString(
  LPCTSTR lpAppName,        // セクション名
  LPCTSTR lpKeyName,        // キー名
  LPCTSTR lpDefault,        // 既定の文字列
  LPTSTR lpReturnedString,  // 情報が格納されるバッファ
  DWORD nSize,              // 情報バッファのサイズ
  LPCTSTR lpFileName        // .ini ファイルの名前
);

とあり、

wchar_t str[4];
int len = GetPrivateProfileString(L"Parameters", L"P1", L"", str, sizeof(str), path);
if(len > 0)
{
	std::wcout << L"P1 = " << str << std::endl;
}

で、
[Parameters]
P1=0123456789
というiniファイルの場合、str結果が0123となっていました。
配列数が4なので3まで、という感じですが、
ただ、nSizeがコード解析で警告されたんですね。

なるほど、
int len = GetPrivateProfileString(L"Parameters", L"P1", L"", str, sizeof(str)/sizeof(wchar_t), path);
としないといけないのか。
この結果012(\0)となり、大丈夫そうです。

意外な盲点でした。