Extended Strings | CodeGuru

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 […]

Written By
CodeGuru Staff
CodeGuru Staff
Feb 9, 1999
4 minute read
CodeGuru content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More

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.

Advertisement

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

CodeGuru Logo

CodeGuru covers topics related to Microsoft-related software development, mobile development, database management, and web application programming. In addition to tutorials and how-tos that teach programmers how to code in Microsoft-related languages and frameworks like C# and .Net, we also publish articles on software development tools, the latest in developer news, and advice for project managers. Cloud services such as Microsoft Azure and database options including SQL Server and MSSQL are also frequently covered.

Property of TechnologyAdvice. © 2026 TechnologyAdvice. All Rights Reserved

Advertiser Disclosure: Some of the products that appear on this site are from companies from which TechnologyAdvice receives compensation. This compensation may impact how and where products appear on this site including, for example, the order in which they appear. TechnologyAdvice does not include all companies or all types of products available in the marketplace.