C++ Builder Meldung : ungültige Zeigeroperation

Hallo, mein Problem ist: ich will ausgewählte Zeichen in einen String speichern und ihn dann ausgeben.Aber wenn ich mehr als zwei Zeichen ausgegeben habe und die Anwendung schließen will kommt eine Fehlermeldung:„Ungültige Zeigeroperation“…

Ich wollte es so lösen:
if(i==2)
{
str2=‚B‘;
strcat(str.c_str(),str2.c_str());
EFenster->Text =str;
}
else
{
if(i==3)
{
str3=‚C‘;
strcat(str.c_str(),str3.c_str());
EFenster->Text =str;
}
usw…

Hi,

dem c_str() nach zu Urteilen benutzt du std::string.
Damit kannst du natürlich die C-Funktion strcat nicht benutzten. Das ist auch nicht nötig, weil du deine Strings einfach mir + zusammenbasteln kannst.

#include 
#include 

int main()
{
 std::string a, b, c;
 a = "Hallo ";
 b = "Welt";
 c = a+b;

 std::cout 

deine Fehlermeldung kommt daher, weil string::c\_str() einen const char\* zurückgibt, auf den natürlich nicht geschrieben werden darf.
Das oben ist allerdings auch viel leichter.

Grüße,

Dankeschön Mimon, ich versuchs mal damit =)

Hallo, Mimon
ich wollte mein Problem so lösen:

void __fastcall TForm1::ButtonSelClick(TObject *Sender)
{
a=" ";

if(i==1)
{
b=„A“;
a=b+a;
EFenster->Text =a;

}
aber dann kommt die Meldung:
[C++ Fehler] Joystick.cpp(843): E2034 Konvertierung von ‚std::string‘ nach ‚AnsiString‘ nicht möglich

kannst du vllt weiterhelfen, ich wäre sehr dankbar

Hi wieder,

mit dem Borland kenn ich mich leider gar nicht aus. Gibts da überhaupt noch ne aktuelle Version?

Egal, ein kurzes googlen hat ergeben, das AnsiString ebenfalls eine Stringklasse ist. Du kannst sie einfach statt std::string verwenden, dann klappt das auch mit der Zuweisung zu deinem Textfeld.

Grüße,

PS: Die Fehlermeldung ist da eigentlich eindeutig :smile: