Ich habe ein seltsames Problem. Ich zuteilen char [] Werte in struct Array, aber sie erhalten verloren: ------- Die Struktur dieses ist:C++ Strukturwerte verloren
typedef struct _Settings
{
const char* str;
uint val;
}Settings;
------- ich es wie folgt zu erstellen:
int nn=10;
settings = new Settings[nn];
for (int i = 0; i < nn; i++) {
string strr = "thisOneIs";
strr.append(std::to_string(i));
settings[i].str = strr.c_str();
string teststr = settings[i].str; //// (1)
settings[i].val = i + 1;
}
..... bei (1), bekomme ich die richtigen Werte.
Aber wenn ich diese dann rufen Sie (an gleicher Stelle, direkt nach dem Code oben), werden die Einstellungen [i] .str ist leer:
for (int i = 0; i < nn; i++) {
string teststr = settings[i].str; ///// (2)
std::cout << settings[i].str << "=" << settings[i].val << "\n";
}
... bei (2), I leer zu bekommen.
Hat jemand eine Ahnung warum? Vielen Dank!
STRR ist eine lokale Variable mit der automatischen Speicherdauer. Sein Anwendungsbereich ist der Blockcode der for-Schleife. Nach dem Verlassen der Schleife ist die Variable nicht mehr aktiv und der entsprechende Zeiger ist ungültig. –
'const char * str' ist ein Zeiger, den Sie auf das temporäre Objekt richten, das am Ende des Oszilloskops zerstört wird. Was erwarten Sie? –
Sie haben Recht. Aber wie kann ich den String-Wert von strr dauerhaft in settings [i] .str kopieren? – Steve