home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
yacl-012.zip
/
basedemo
/
string
/
strtest.cxx
< prev
Wrap
C/C++ Source or Header
|
1995-02-26
|
4KB
|
118 lines
#include "base/base.h"
#include <stdio.h>
#include <strstream.h>
#include <iostream.h>
void main ()
{
{
CL_String line ("A sample, with a comma, here. ");
CL_StringSequence sq = line.Split (' ');
long n = sq.Size();
cout << "# fields: " << n << endl;
for (short i = 0; i < n; i++)
cout << "'" << sq[i] << "'\n" ;
CL_String f1 = line.Field (1); // f1 now contains "A"
f1 = line.Field (2, " ,"); // f1 now contains "sample"
f1 = line.Field (2, ","); // f1 now contains " with a comma"
CL_String fld[3];
n = line.Split (fld, 3, " ,");
// Now fld[0] contains "A"
// fld[1] contains "sample"
// fld[2] contains ", with a comma, here."
// n contains 3.
i = 1;
}
{
CL_String s ("This string has five words.");
CL_StringSplitter split (s);
CL_String field;
split.Reset();
field = split.Next (); // Use blank as separator, so
// field now contains "This"
field = split.Next ("i"); // field is now " str", and the
// separator set becomes "i"
field = split.Next (); // field is now "ng has f", since "i"
// is the current separator set
}
istrstream st1 ("Line 1\nLine 02\n Line 3\n 12:30");
CL_String s1;
s1.ReadLine (st1);
cout << s1 << endl;
s1.ReadLine (st1);
cout << s1 << endl;
s1.ReadLine (st1);
cout << s1 << endl;
CL_TimeOfDay time1;
st1 >> time1;
cout << time1 << endl;
CL_String strg1;
strg1.Insert (" Hello ABC ");
strg1.Insert ('W', 10);
strg1.Insert (" 123456789 123456789 123456789 12345678 ", 5);
strg1.Append ('!');
strg1 = 9879873L; cout << "After long assignment: " << strg1 << endl;
strg1 = 8989.893; cout << "After float assignment: " << strg1 << endl;
CL_String s (5003L, 10);
CL_String t (-51L, 4);
CL_String u (3L, 2);
CL_String v (0L, 3);
v.AssignWithFormat ("String '%s' long %ld char '%c'", strg1.AsPtr(),
strg1.AsLong(), 'x');
CL_String line (" A line where \"Hello, world\" is included");
// printf (" 'where' occurs at position %ld\n", line.Index ("where"));
// Test the substring operations
line(3, 5) = "HELLO";
printf ("Line is '%s'\n", line.AsPtr());
line (8,2) += "JUNK";
line (39,3) += "Some tail-end junk";
line (22,0) = " Inserted text "; // Insert before position 22
line (22,9) = ""; // Remove the word " Inserted "
printf ("Count %ld\n", line (5, 20).ToLower ());
printf ("Count %ld\n", line(10,7).ToUpper ());
CL_String flds[30];
s = line.Field (0); printf ("Field 0: '%s'\n", s.AsPtr());
s = line.Field (1); printf ("Field 1: '%s'\n", s.AsPtr());
s = line.Field (2); printf ("Field 2: '%s'\n", s.AsPtr());
s = line.Field (5); printf ("Field 5: '%s'\n", s.AsPtr());
s = line.Field (7); printf ("Field 7: '%s'\n", s.AsPtr());
CL_StringSplitter split (line);
char* seps = " ";
for (split.Reset(); s = split.Next(seps), s.Length() > 0;) {
printf ("s: '%s'\n", (const char*) s);
seps = "w";
}
printf ("Testing the split into a string sequence:\nString: '%s'\n",
line.AsPtr());
CL_Sequence<CL_String> seq = line.Split();
for (short i0 = 0; i0 < seq.Size(); i0++)
printf ("Field %d: '%s'\n", i0, seq[i0].AsPtr());
printf ("------------------\n");
line = "Another string";
s = line.Field (2);
s = CL_String ("The gcd of ") + 7 + " and " + CL_String (19L)
+ " is ";
s = s + 1;
printf ("%s\n", (const char*) s);
CL_Integer i1(5938), i2(9), i3(5), i4 (93);
printf ("First: %d\n", i1.CompareWith (i4, CL_Object::OP_PREFIX));
printf ("Second: %d\n", i1.CompareWith (i2, CL_Object::OP_EQUAL));
printf ("Third: %d\n", i1.CompareWith (i4, CL_Object::OP_CONTAINS));
printf ("Fourth: %d\n", i1.CompareWith (i3, CL_Object::OP_PREFIX));
}