mfc 数组类

在MFC的数组类可以创建和操作一个可以处理各种数据类型的一维数组对象。

MFC数组类包含CByteArray , CDWordArray , CPtrArray , CUintArray , CWordArray和CStringArray。每个类都被设计成可以处理一个特定的数据类型。

例如:CUintArray类是一个处理无符号整数型的数组类,CObjectArray类代表对象数组类。这些数组类几乎相同,仅仅的区别在于他们存的数据类型不同。


PS: 在MFC也可以用标准类型的String 和容器类结合来处理数据    。

比如利用vector<string> 来处理字符串数组,但是vector<>的缺点在于不能从中间插入,这时候我们就可以考虑使用同其他容器类,比如:list


下面我们就采用MFC中派生的数据类来实现一个CStringArray型的数组类


首先我们需要创建如下的界面:




并为其关联成员变量

首先我们要在Dlg类中添加一个

CStringArray m_array; //用来保存字符串数组


下面我们来写关于提交操作:

void CMFCApplication1Dlg::OnBnClickedCheck()
{
// TODO:  在此添加控件通知处理程序代码
UpdateData(TRUE);
wchar_t str = m_pos.GetAt(0);
int m_pos1 = _ttoi(&str);
//MessageBox(_T("%d"))
switch (m_radio){
int i;
case 0: 
if (m_pos1  < 0 || m_pos1> m_array.GetSize()){
AfxMessageBox(_T("数组位置不正确"));
return;


}




if (m_InsertValue.IsEmpty()){
AfxMessageBox(_T("信息不能为空!"));
return;
}


m_array.InsertAt(m_pos1, m_InsertValue);
m_ListBox1.ResetContent();


for (i = 0; i < m_array.GetSize(); i++){
m_ListBox1.AddString(m_array.GetAt(i));
}


m_InsertValue = "";
m_pos1 = m_array.GetSize();


UpdateData(false);
break;
case 1:
if (m_pos1 < 0 || m_pos1 > m_array.GetSize()){
AfxMessageBox(_T("该位置没有数组元素!"));
return;
}


m_array.RemoveAt(m_pos1);
m_ListBox1.ResetContent();
for ( i = 0; i < m_array.GetSize(); i++){
m_ListBox1.AddString(m_array.GetAt(i));
}


m_InsertValue = "";
m_pos1 = m_array.GetSize();
UpdateData(false);
break;
}
}



以前操作就完成了数据的插入或者是删除。


这课中遇到的问题就是

wchar_t str = m_pos.GetAt(0);
int m_pos1 = _ttoi(&str);

由于编译器默认的是Unicode,所以获取的字符是宽字符,所以需要用宽字符处理函数来进行处理。而不能同char类型来处理数据。那样会造成数据丢失,而出现bug


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值