关于CString中Remove函数的一个疑问
我的响应"确定"按钮的函数如下:
void CCLoginDlg::OnOK()
{
// TODO: Add extra validation here
CString UserName;//用户输入的用户名
CString pass;//用户输入的秘密
CEdit *p;
//获得文本框输入的用户名
p=(CEdit *)GetDlgItem(IDC_USERNAME);
p->GetWindowText(UserName);
p=NULL;
CString Password;
if(m_ds->GetPassword(&UserName,&Password))
{
@@@@@@@@
CEdit *q;
q=(CEdit *)GetDlgItem(IDC_PASSWORD);
q->GetWindowText(pass);
q=NULL;
int n=Password.Remove(' ');
@@@@@@@@ if(pass==Password)
{
::AfxMessageBox("登陆成功");
}
else
{
::AfxMessageBox("非法密码");
}
}
else
{
::AfxMessageBox("非法用户名");
}
CDialog::OnOK();
}
我在打@@@@@@@符号的地方设置了断点,调试运行结果如下:(我不截图了,只把Password和pass两个变量的变化抄下来)
1.在第一个断点处: (目前pass还没有值)
Name Value
Password {"liuerhu "}
pass {""}
2.在第二个断点处:(Remove怎么没有按我想的去掉空格而是把它清空了,并且返回值是0,这是怎么回事呢???)
Name Value
Password {""}
pass {"liuerhu"}
n 0
如果我把int n=Password.Remove(' ');给注释掉的话第二处断点处结果就是:
Name Value
Password {"liuerhu "}
pass {"liuerhu"}
这里的Password.Remove(' ') 并不是去掉了空格,而是把Password清空了,这是怎么回事呢??请大家帮帮忙。