Extended Strings

The XString-class is a powerfull extension to
the standard CString-class. Whereever you use a CString you can
now use a XString with much more functionality. The class
includes many string-functions I missed in CString, like
removing, replacing or inserting strings into another,
convertingfunctions to double or int and case-insensitive find,
replace and remove. But the most powerfull extension is a method
I called ‘Elementstrings’. Most of the functions are const and
return a XString, so you can use them in an expression. The
functionality of this class is not very difficult to understand
or to implement, but in my case, it saves a lot of time in my
projects.

If you miss some functions which could be usefull to extend
this class please contact me.

Additional String functions
What are Elementstrings?
Elementstring functions
Friend functions

Download
source file (8 KB)
(comments in
german)

Additional Stringfunctions:

Function Description Example Result
    XString
num("12.345");
Double Convertion to double num.Double() 12.345
Int Convertion to int num.Int() 12
Char Convertion to char num.Char() 1
Bool Convertion to bool num.Bool() true
    XString
test("Test Test");
Remove Remove first occurence of a string, char or range test.Remove(‘e’) "Tst Test"
RemoveAll Remove all occurences of a string or char test.RemoveAll("e") "Tst Tst"
Replace Replace first occurence of a string, char or range
with another string
test.Replace("x",
"e")
"Txst Test"
ReplaceAll Replace all occurences of a string or char with
another string
test.ReplaceAll("x",
"e")
"Txst Txst"
Insert Inserts a string at a given position test.Insert("e", 1) "Teest Test"
    XString
op("Test");
XString leer;
operator– Remove last character of the string op–, –op "Tes"
operator! Indicates, wheter the string was empty !op
!lee
false
true
    XString
test("Test");
NCFind
NCRemove
NCReplace
Like Find, Remove or Replace, but case-insensitiv (No
Case)
test.Find("E")
test.NCFind("E")
-1
1
    XString
test(" Test ");
Reverse Reverses the string test.Reverse() " tseT "
Trim Delete leading and trailing whitespaces test..Trim() "Test"
Lower Returns lowercase string test.Lower() " test "
Upper Returns uppercase string test.Upper() " TEST "
    XString
test("Test Test");
FromTo Like Mid, but using positions test.FromTo(5, 7) "Tes"
Count Counts the occurence of a string or char in another
string
test.Count(‘e’) 2
    XString
test("Test")
FindIndex Search the position of the first occurence of a char test.FindIndex(‘s’) 2
Fill Fill the string to the specified length with trailing
spaces
test.Fill(5) "Test "
    XString
error("Error * in Line *");
ReplaceTabs Replace all t in the string with the corresponding
number of spaces
   
ReplaceText Replace ‘*’ with specified text.
When using more than one ‘*’ devide the replace-texts
with ‘|’
error.ReplaceText("75|120") "Error 75 in Line
120"
    XString
format("###.##");
GetDoubleFormatString Translate a formatting-string into C-notation format.GetDoubleFormatString() "%6.2lf"

What are Elementstrings?

Elementstrings are a special sort of short (and dynamic)
stringarrays. Every array-entry was divided with a separator from
the next entry. For example, the elementstring
"zero|one|two|three" has four elemententrys. With this
class you can easyly get, set or find a specified element. You
don’t have to specify the size of the ‘array’, because it’s only
one string. The entries can be strings, chars, doubles, ints or
bools. If you set an entry, the numbers are converted into
strings and if you get one, it was back converted to the
specified type. Normaly the separator is ‘|’, but it’s possible
to use every other character.

Elementstringfunctions:

Function Description Example Result
    XString
str("zero|one|22|3.3|four|5||7")
Element Return the given element as string str.Element(1) "one"
Elements Return the given elements as an elementstring str.Elements(1, 4) "one|22|3.3|four"
operator() same as Element or Elements str(3) "3.3"
GetString
GetDouble
GetInt
GetChar
GetBool
Return the given element as specified type str.GetString(3)
str.GetDouble(3)
str.GetInt(3)
str.GetChar(3)
str.GetBool(3)
"3.3"
3.3
3
‘3’
true
SetElement Set the element at the given index with a
string, double, int, char or bool
str.SetElement(3, 99)
str.SetElement(9, ‘x’)
"zero|one|22|99|four|5||7"
"zero|one|22|99|four|5||7||x"
ElementIndex Retrieve the index of the specified element str.ElementIndex("four")
str.ElementIndex(1)
4
-1
ElementSortString
ElementSortDouble
ElementSortInt
ElementSortChar
ElementSort
Sort the elementstring by using the specified type str.ElementSortString()
str.ElementSortInt()
str.ElementSortDouble()
"|22|3.3|5|7|four|one|zero"
"0|0|0|0|3|5|7|22"
"0|0|0|0|3.3|5|7|22"
       
SetSeparator Defines a new separator XString::SetSeparator(‘#’)  
RestoreSeparator Restores temporary separators XString::RestoreSeparator()  
    XString
str("one#two#three")
You can use all functions with an
additional parameter as temporar separator.
str.Element(1)
str.Element(1, ‘#’)
"one#two#three"
"two"

Friendfunctions:

Function Description Example Result
itoa Create a XString from an int itoa(5) "5"
utoa Create a XString from an unsinged int utoa(2) "2"
dtoa Create a XString from a doube dtoa(3.14)
dtoa(3.14, 5)
"3.14"
"3.14000"
Repeat Create a XString with copies of a given string or
char
Repeat(‘x’, 10)
Repeat("Test", 3")
"xxxxxxxxxx"
"TestTestTest"
GetStringTableEntry Return the entry of a stringtableresource GetStringTableEntry(
AFX_IDS_IDLEMESSAGE)
"Ready"
Concat Create an elementstring of 1 to 16 strings Concat("This",
"Is", "A", "Test")
"This|Is|A|Test"

 

If you’ve questions, contact me at Joachim.Raidl@iname.com

Last updated: 8 May 1998

More by Author

Get the Free Newsletter!

Subscribe to Developer Insider for top news, trends & analysis

Must Read