0

重複の可能性:
初期化時に Char 配列でエラーが発生する

Windowsレジストリに環境変数を挿入したいので、次のC++コードを結びました:

string appDataPath = getenv("appdata");

    HKEY hkey;
    char value[] = appDataPath.c_str();

    RegOpenKeyEx(HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\Currentversion\\Run", 0, KEY_SET_VALUE, &hkey);
    RegSetValueEx (hkey, "MyProgram", 0, REG_SZ, (LPBYTE) value, strlen(value) + 1);
    RegCloseKey(hkey);

コードブロックのデバッグ出力が教えてくれます:error: initializer fails to determine size of 'value' コンパイルする前にコンパイラが変数のサイズを知る必要があるためだと思いますが、それを修正する方法がわかりません...

ありがとう !

4

2 に答える 2

1

c_str()const char*ではなく、を返しますchar[]。変化する

char value[] = appDataPath.c_str();

const char* value = appDataPath.c_str();

配列変数には長さが必要であるため、コンパイラーはエラーを出します-これは提供されていません。

于 2013-01-21T14:24:30.147 に答える
0

使用する

const char * value = appDataPath.c_str();

(<string>参照を読んで、の戻り型を見つけてください。c_str()実際にそうであることがわかりますconst char *。)


2つの文字列を連結する方法についての質問について:

sではなくC++文字列を使用してこれをchar *行い、後で変換します。

string newstring = appDataPath;
newstring.append("some text");
const char * value = newstring.c_str();
于 2013-01-21T14:23:38.497 に答える