一个奇怪的问题?(关于String和char*)

bangle bangle 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我在一个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();
前面加//这样再运行,结果正常。

各位大师能给我解释一下吗?














































...全文
评论 3
收藏 已收藏
分享
返回顶部
bangle
C++ Builder 13,871 成员 102,696 内容