[VC(Visual C++) ]-MFC的CStringArrayy 資料排序
[VC(Visual C++) ]-MFC的CStringArrayy 資料排序
本篇要分享– MFC(VC6)的CStringArrayy 資料進行排序,有興趣的(C/P)同好,歡迎來(C/P)一下哈哈 ^ ^。
SortableStringArray.h
// SortableStringArray.h: interface for the CSortableStringArray class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_SORTABLESTRINGARRAY_H__349A568A_2C25_4BC9_A63F_CF6DCC5FD4CC__INCLUDED_) #define AFX_SORTABLESTRINGARRAY_H__349A568A_2C25_4BC9_A63F_CF6DCC5FD4CC__INCLUDED_
#if _MSC_VER > 1000 #pragma once #endif// _MSC_VER > 1000
typedefint (__cdecl *GENERICCOMPAREFN)(constvoid * elem1, constvoid * elem2); typedefint (__cdecl *STRINGCOMPAREFN)(const CString * elem1, const CString * elem2);
class CSortableStringArray : public CStringArray {
public: CSortableStringArray();
virtual ~CSortableStringArray(); void Sort(STRINGCOMPAREFN pfnCompare = Compare);
protected: staticint __cdecl Compare(const CString * pstr1, const CString * pstr2); };
#endif// !defined(AFX_SORTABLESTRINGARRAY_H__349A568A_2C25_4BC9_A63F_CF6DCC5FD4CC__INCLUDED_)
|
SortableStringArray.cpp
// SortableStringArray.cpp: implementation of the CSortableStringArray class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h" #include "CStringArray_Sort.h" #include "SortableStringArray.h" #include <afxtempl.h>
#ifdef _DEBUG #undef THIS_FILE staticchar THIS_FILE[]=__FILE__; #definenew DEBUG_NEW #endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CSortableStringArray::CSortableStringArray()
{
}
CSortableStringArray::~CSortableStringArray()
{
}
int CSortableStringArray::Compare(const CString * pstr1, const CString * pstr2) {
ASSERT(pstr1);
ASSERT(pstr2);
return pstr1->Compare(*pstr2); }
void CSortableStringArray::Sort(STRINGCOMPAREFN pfnCompare /*= CSortedStringArray::Compare */) {
CString * prgstr = GetData();
qsort(prgstr,GetSize(),sizeof(CString),(GENERICCOMPAREFN)pfnCompare); }
|
CStringArray_Sort.cpp
// CStringArray_Sort.cpp : Defines the entry point for the console application.
//
#include "stdafx.h" #include "CStringArray_Sort.h" /////////////////////////////////
#include "SortableStringArray.h" /////////////////////////////////
#ifdef _DEBUG #definenew DEBUG_NEW #undef THIS_FILE staticchar THIS_FILE[] = __FILE__; #endif
/////////////////////////////////////////////////////////////////////////////
// The one and only application object
CWinApp theApp;
usingnamespace std;
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) {
int nRetCode = 0;
// initialize MFC and print and error on failure if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) {
// TODO: change error code to suit your needs cerr << _T("Fatal Error: MFC initialization failed") << endl;
nRetCode = 1;
}
else {
// TODO: code your application's behavior here. CSortableStringArray SASA;
SASA.Add(CString("test_840K"));
SASA.Add(CString("test_64K"));
SASA.Add(CString("test_640K"));
SASA.Add(CString("test_1240K"));
for (int i = 0; i <= SASA.GetUpperBound(); i++) cout << SASA[i].GetBuffer(0) << endl;
SASA.Sort();
cout <<"/////////////////////////////////"<< endl;
for (int j = 0; j <= SASA.GetUpperBound(); j++) cout << SASA[j].GetBuffer(0) << endl;
}
return nRetCode; }
|
CStringArray_Sort.h
#if !defined(AFX_CSTRINGARRAY_SORT_H__86576243_E046_4134_B859_5B29476B9AF1__INCLUDED_) #define AFX_CSTRINGARRAY_SORT_H__86576243_E046_4134_B859_5B29476B9AF1__INCLUDED_
#if _MSC_VER > 1000 #pragma once #endif// _MSC_VER > 1000
#include "resource.h"
#endif// !defined(AFX_CSTRINGARRAY_SORT_H__86576243_E046_4134_B859_5B29476B9AF1__INCLUDED_)
|
完整範例下載:http://yfdisk.com/file/jashliao/10cb3cf2/
參考資料出處:http://support.microsoft.com/kb/216858/zh-tw