One of the reasons I
left C and began to use C++
was CString and
even more so CStringArray.
These two classes are worth all the other aggravation
when going OO. I don't claim that they are perfect.
There are things missing in both of those classes and
I would like to share this extension of CStringArray
that I have made.
Finding an string in a
One of the things that
I think are missing in CStringArray
is a Find method. I find myself wanting to get a
specific string out of the array and I know part, or the
whole, of it. Not the position in the array. So I added
this method. It is very straight forward and uses CString::Find
to find the string.
// fill the array with strings using the normal Add()
arr.Add("This is a String");
arr.Add("The second string");
arr.Add("the 3:rd string");
// find the third string
// i is now 2
// sBuf has now the value of "the 3:rd string"
Array of NULL
Some SDK-functions and
some classes still using an array of NULL terminating
CFileDialog uses this kind of
array for the filters.
also uses it, and there are many more. So every time you
need to use this class/function you have to go back to C
and do a lot of loops. Well I finally got tired of it
and extended CStringArray
with two methods;
The first will take an array of NULL terminating strings
and add it to the StringArray,
and the second will do the reverse
// init filter
// Init file dialog
dlg.m_ofn.Flags |= OFN_SHAREAWARE;
// Get all printer names
// add them to the array
// Get the second printer name from the array
CString sPrintName = arr.GetAt(2);
Well that's it! It's
not a very large class so there is not so much to say. I
hope that someone will find use for this and PLEASE let
me know what you think! This is the first class I ever
published so please say what you think about it, good,