if (pResult == "1")
これは、ここにあなたがポインタではなく、それらが指す実際のデータを比較し、間違っています。あなたは_stricmp
(大文字と小文字を区別しませんが)もありますwindows
でif (std::strcmp(pResult,"1") == 0)
のようなもの(strcmp
は大文字と小文字が区別されます)
を使用する必要があります。
私は戻って、私はこのような小さなヘルパーを書いた日に覚え
:
std::string get_profile_string(LPCSTR name, LPCSTR key, LPCSTR def, LPCSTR filename)
{
char temp[1024];
int result = GetPrivateProfileString(name, key, def, temp, sizeof(temp), filename);
return std::string(temp, result);
}
小さな文字列の最適化が有効になっている場合result
が(そう何のメモリ割り当てが起こるんだろう)十分に小さい場合、それが使用されます。 1024文字の制限がありますが、必要な場合はそれを増やすことができます。
std::string
クラスは、==
演算子に等しいオーバーロードを実行するので、今回はif (pResult == "1")
が実際に動作します。
string result = get_profile_string("login", "uname", "", "C:\\Program Files\\myfile\\login.ini");
if (result == "1")
g_pCVar->ConsoleColorPrintf(Color::Purple(), "----Login-Succesfull----\n");
else
g_pCVar->ConsoleColorPrintf(Color::Purple(),"----Login-Failed----\n");
しかし、あなたは、単に整数をしたい場合は、理想的には、その後、あなたはまったくGetPrivateProfileString
を使用しないでください。代わりに、GetPrivateProfileInt
int age = GetPrivateProfileInt("user", "age", 0, "C:\\Program Files\\myfile\\login.ini");
if (age >= 18)
{ }
else
{ }
出典
2016-03-31 06:34:53
Jts
「GetPrivateProfileString」とは何ですか? –
@Mohit Jain:標準ウィンドウの1つでは、iniファイルからキーを読み取る機能はありませんか? – DrDonut
docsから*この関数は、16ビットのWindowsベースのアプリケーションとの互換性のためにのみ提供されています。* iniファイルにアクセスするには別の方法を使用してください。エラーの戻り値をチェックしていないのはなぜですか? –