#define
_AFXDLL
#include
<
afx.h
>
#include
<
afxcoll.h
>
#include
<
iostream
>
using
namespace
std;

class
CSortStringArray:
public
CStringArray
{
public:
voidSort();
private:
BOOLCompareAndSwap(intpos);
}
;
void
CSortStringArray::Sort()
{
BOOLbNotDone=TRUE;
while(bNotDone)

{
bNotDone=FALSE;
for(intpos=0;pos<GetUpperBound();pos++)
bNotDone|=CompareAndSwap(pos);
}
}
BOOLCSortStringArray::CompareAndSwap(
int
pos)
{
CStringtemp;
intposFirst=pos;
intposNext=pos+1;
if(GetAt(posFirst).CompareNoCase(GetAt(posNext))>0)

{
temp=GetAt(posFirst);
SetAt(posFirst,GetAt(posNext));
SetAt(posNext,temp);
returnTRUE;
}
returnFALSE;
}
void
main()
{
CSortStringArraysortArray;
sortArray.Add(CString("Zebra"));
sortArray.Add(CString("Bat"));
sortArray.Add(CString("Apple"));
sortArray.Add(CString("Mango"));
for(inti=0;i<=sortArray.GetUpperBound();i++)
cout<<sortArray[i]<<endl;
sortArray.Sort();
cout<<endl;
for(intj=0;j<=sortArray.GetUpperBound();j++)
cout<<sortArray[j]<<endl;
system("pause");
}
参考: How to Sort a CStringArray in MFC<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
本文介绍了一个在MFC框架下实现CStringArray类排序的方法。通过继承CStringArray并覆盖其成员函数来完成字符串数组的不区分大小写的排序操作。文章提供了一个完整的示例程序,演示了如何创建和使用CSortStringArray类来进行排序。
462

被折叠的 条评论
为什么被折叠?



