一个奇怪的问题?(关于String和char*)
我在一个Form里加入以下控件:
一个Memo
一个Button
两个Edit
我发现以下现象:
第一:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
i=0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
String M_string;
char *M_char;
M_string=Memo1->Lines->Strings[i];
M_char=Memo1->Lines->Strings[i].c_str();
Edit1->Text=M_string;
Edit2->Text=M_char;
i++;
}
//---------------------------------------------------------------------------
结果:
i=0时:
Edit1->Text="abc"
Edit2->Text="abc"
i=1时:
Edit1->Text="de"
Edit2->Text="abc"
i=2时:
Edit1->Text="f"
Edit2->Text="de"
第二:
{
String M_string;
char *M_char;
M_string=Memo1->Lines->Strings[i].c_str();
M_char=Memo1->Lines->Strings[i].c_str();
Edit1->Text=M_string;
Edit2->Text=M_char;
i++;
}
结果:
i=0时:
Edit1->Text="abc"
Edit2->Text=""
i=1时:
Edit1->Text="de"
Edit2->Text=""
i=2时:
Edit1->Text="f"
Edit2->Text=""
第三:
如果单独把:M_string=Memo1->Lines->Strings[i].c_str();
或者: M_char=Memo1->Lines->Strings[i].c_str();
前面加//这样再运行,结果正常。
各位大师能给我解释一下吗?