北京某公司的面试题之一

题目是这样的:
编写一个字符串分割模块,用户可以在屏幕上输入任意字符串和分割字符,然后点击‘分割’按钮,结果显示在一个listbox控件上。
例如:I love beijing and china, 按字符i分割的话成为五个句子
i
love bei
ji
ng and chi
na
这个题刚开始看了一下,很简单,但是写程序的时候会发现很多问题了,到现在还是没有完全完善好这程序,没那么多时间去完善了,先把写的发出来吧,有时间再去完善吧,也希望高人们指教,谢谢。

CString str; //字符串
CString stop; //分割字符
CString strsave;
UpdateData(TRUE); //刷新文本内容
GetDlgItem(IDC_EDIT1)->GetWindowText(str);
GetDlgItem(IDC_EDIT2)->GetWindowText(stop);

int len=str.GetLength();
int lensave;
while(str.Find(stop))
{
lensave=str.Find(stop);
strsave=str.Left(lensave);
CString strout=strsave+stop;
//MessageBox(strout);
m_list.AddString(strout);//要关联对象变量,使用指针的话,不可以保存多个值
if (strout==stop)
{
break;
}
str=str.Right(len-lensave-1);
len=str.GetLength();
}
//此程序存在两个问题,第一当输入第一个字符为查找字符时,直接转到判断退出了
//第二就是用指针CListbox保存后的值都是第一个值,所以要关联对象变量,但是添加顺序是乱的
//期待高手解决吧。。。

几天后??? QQ:大连—虬(610512037) 帮完善了。

CString str; //字符串
CString stop; //分割查找字符
CString strsave;//分割后部分字符串
UpdateData(TRUE); //刷新文本内容

GetDlgItem(IDC_EDIT1)->GetWindowText(str);
GetDlgItem(IDC_EDIT2)->GetWindowText(stop);
CListBox *plist=(CListBox *)GetDlgItem(IDC_LIST1);
//获取原始字符串长度
int len=str.GetLength();
//找到第一个分割字符位置
int lensave = str.Find(stop);
while( len > 0 )
{
strsave=str.Left(lensave);
CString strout=strsave+stop;
//如果strout以空格开头,则删除空格
if (strout[0] == ' ')
{
int lentemp = strout.GetLength();
strout = strout.Right(lentemp - 1);
}
//每次都从list末尾插入
plist->InsertString(-1,strout);
str=str.Right(len - lensave - 1);
lensave = str.Find(stop);
len=str.GetLength();
//如果当前剩余字符串已经没有分隔符,则直接将剩余字符串插入list末尾
if ((lensave == -1) && ( len != 0))
{
plist->InsertString(-1,str);
break;
}
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注