home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C!T ROM 2
/
ctrom_ii_b.zip
/
ctrom_ii_b
/
PROGRAM
/
C
/
STRPP11
/
STR_TEST.CPP
next >
Wrap
C/C++ Source or Header
|
1992-03-24
|
8KB
|
225 lines
/* -------------------------------------------------------------------- */
/* str_test.cpp */
/* */
/* String++ Demo program Last revised 03/23/92 */
/* -------------------------------------------------------------------- */
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include "str.h"
void pause(void);
main()
{
string *array;
int i, pos, num;
clrscr();
string title1 = "String++ Version 1.1";
string title2 = "Written by Carl W. Moreland";
string title3 = "Demonstration of methods & operators";
string title4 = "Hit any key to continue,";
string title5 = "or <Ctrl>C to exit...";
printf("\n\n\n\n\n\n\n\n");
printf("%s\n", (justify(title1, CENTER_JUSTIFY, 78))());
printf("%s\n\n", (justify(title2, CENTER_JUSTIFY, 78))());
printf("%s\n\n", (justify(title3, CENTER_JUSTIFY, 78))());
printf("%s\n", (justify(title4, CENTER_JUSTIFY, 78))());
printf("%s\n", (justify(title5, CENTER_JUSTIFY, 78))());
pause();
printf("First, create a string and assign it \"Hello World.\"\n\n");
string str1 = "Hello World.";
printf("string str1 = \"Hello World.\";\n\n");
printf("The string contents are returned by the () operator:\n\n");
printf("str1() = %s\n\n", str1());
printf("The length of str1 is given by the len() member function:\n\n");
printf("str1.len() = %d\n\n", str1.len());
printf("Placing a number in the () operator returns the substring\n");
printf(" of the string starting at that number:\n\n");
printf("str1(6) = %s\n\n", str1(6));
printf("The nth character is returned by the [] operator:\n\n");
printf("str1[6] = %c\n\n", str1[6]);
pause();
printf("Let's create a new string that's equal to str1*2:\n\n");
string str2 = str1*2;
printf("string str2 = str1*2;\n");
printf("str2() = %s\n\n", str2());
printf("Now multiply str2 by 2:\n\n");
str2 *= 2;
printf("str2 *= 2;\n");
printf("str2() = %s\n\n", str2());
pause();
printf("Create a new string with the contents \"only\":\n\n");
string str3 = "only";
printf("string str3 = \"only\";\n\n");
printf("Now use the + operator to add to it:\n\n");
str3 = "This is " + str3 + " a test";
printf("str3 = \"This is \" + str3 + \" a test\";\n");
printf("str3() = %s\n\n", str3());
pause();
printf("Create a new string and use the += operator to append to it:\n\n");
string str4 = "Please ";
str4 += "stand by...";
printf("string str4 = \"Please \";\n");
printf("str4 += \"stand by...\";\n");
printf("str4() = %s\n\n", str4());
printf("Use the left(), mid(), & right() functions to return substrings:\n\n");
printf(" left(str4, 6) = %s\n", (left(str4, 6))());
printf(" mid(str4, 7, 5) = %s\n", (mid(str4, 7, 5))());
printf("right(str4, 5) = %s\n\n", (right(str4, 5))());
printf("We could also use the member functions to do the same:\n\n");
printf(" str4.left(6) = %s\n", (str4.left(6))());
printf(" str4.mid(7, 5) = %s\n", (str4.mid(7, 5))());
printf(" str4.right(5) = %s\n\n", (str4.right(5))());
pause();
printf("Create multiple characters by passing an optional multiplier to\n");
printf(" the string constructor:\n\n");
string str5 = "/* " + string('-', 40) + " */";
printf("string str5 = \"/* \" + string(\'-\', 40) + \" */\";\n");
printf("str5() = %s\n", str5());
pause();
printf("The justify function will expand a string to a total width of n\n");
printf(" by adding blanks and justify the non-blank portion:\n\n");
string str6 = "Hello World.";
string str6a = "│" + str6.justify(LEFT_JUSTIFY, 20) + "│";
string str6b = "│" + str6.justify(CENTER_JUSTIFY, 20) + "│";
string str6c = "│" + str6.justify(RIGHT_JUSTIFY, 20) + "│";
printf("string str6 = str1;\n");
printf("str6a = \"│\" + str6.justify(LEFT_JUSTIFY, 20) + \"│\";\n");
printf("str6b = \"│\" + str6.justify(CENTER_JUSTIFY, 20) + \"│\";\n");
printf("str6c = \"│\" + str6.justify(RIGHT_JUSTIFY, 20) + \"│\";\n");
printf("str6a() = %s\n", str6a());
printf("str6b() = %s\n", str6b());
printf("str6c() = %s\n", str6c());
printf("\nHere's what happens when clipping is used:\n\n");
str6a = "│" + str6.justify(LEFT_JUSTIFY, 8, CLIP) + "│";
str6b = "│" + str6.justify(CENTER_JUSTIFY, 8, CLIP) + "│";
str6c = "│" + str6.justify(RIGHT_JUSTIFY, 8, CLIP) + "│";
printf("str6a = \"│\" + str6.justify(LEFT_JUSTIFY, 8, CLIP) + \"│\";\n");
printf("str6b = \"│\" + str6.justify(CENTER_JUSTIFY, 8, CLIP) + \"│\";\n");
printf("str6c = \"│\" + str6.justify(RIGHT_JUSTIFY, 8, CLIP) + \"│\";\n");
printf("str6a() = %s\n", str6a());
printf("str6b() = %s\n", str6b());
printf("str6c() = %s\n", str6c());
pause();
printf("The == operator will work for string == string, string == char*,\n");
printf(" or for char* == string:\n\n");
if(str1 == "Hello World.")
printf("str1 == \"Hello World.\"\n");
else
printf("str1 != \"Hello World.\"\n");
if("Hello World." == str1)
printf("\"Hello World.\" == str1\n");
else
printf("\"Hello World.\" != str1\n");
pause();
printf("The C-style function toupper() will return the upper case version\n");
printf(" of a string without changing the string itself, whereas the\n");
printf(" member function toupper() will convert the string internally:\n\n");
printf("str1() = %s\n", str1());
printf("toupper(str1) = %s\n", (toupper(str1))());
printf("str1() = %s\n", str1());
str1.toupper();
printf("str1.toupper();\n");
printf("str1() = %s\n", str1());
pause();
printf("The following are AWK functions.\n\n");
printf("index() returns the location of a substring in a string:\n\n");
pos = index(str1, "WOR");
printf("str1() = %s\n", str1());
printf("pos = index(str1, \"WOR\");\n");
printf("pos = %d\n", pos);
pause();
printf("split() will split a string at a given substring delimiter:\n\n");
string str7 = "d:\\prog\\turboc\\str";
num = split(str7, &array, "\\");
printf("string str7 = \"d:\\prog\\turboc\\str\";\n");
printf("num = split(str7, array, \"\\\");\n\n");
printf("In this example, str7 is split using the \\ character as the\n");
printf(" delimiter. The results are placed in array, which now contains:\n\n");
for(i=0; i<num; i++)
printf("array[%d] = %s\n", i, array[i]());
printf("\n");
pause();
printf("gsub() performs a global substitution. In this example, we want to\n");
printf(" replace all \\'s with /'s:\n\n");
printf("str7() = %s\n", str7());
i = gsub("\\", "/", str7);
printf("i = gsub(\"\\\", \"/\", str7);\n");
printf("str7() = %s\ni=%d\n", str7(), i);
pause();
printf("sub() performs a one-time substitution:\n\n");
i = sub("LO", "P ME,", str1);
printf("str1() = %s\n", str1());
printf("i = sub(\"LO\", \"P ME,\", str1);\n");
printf("str1() = %s\ni = %d\n", str1(), i);
pause();
printf("substr() returns a substring of the string starting at n. If a\n");
printf(" a third parameter is given, it represents the maximum number\n");
printf(" of characters to return\n\n");
string str_3 = substr(str3, 8);
string str_4 = substr(str4, 7, 5);
printf("str3() = %s\n", str3());
printf("substr(str3, 8) = %s\n\n", str_3());
printf("str4() = %s\n", str4());
printf("substr(str4, 7, 5) = %s\n", str_4());
pause();
return 0;
}
void pause(void)
{
char ch = getch();
if(!ch)
getch();
if(ch == 0x03)
exit(0);
clrscr();
printf("\n");
}