【C++】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)となり、大丈夫そうです。
意外な盲点でした。