home *** CD-ROM | disk | FTP | other *** search
- #include <stream.h>
- #include <string.h>
-
-
- void usage ()
- {
- cout << "\ncout (c) by Harald Pehl in 1993\n"
- "Synthax: cout [Zeichenkette]\n"
- "In der Zeichenfolge <Zeichenkette> können diverse "
- "Steuerelemente enthalten sein:\n\n"
- "Aus C gebräuchliche:\n"
- "\t\\a: Klingelzeichen \\b: Backspace\n"
- "\t\\f: Seitenvorschub \\n: Zeilentrenner\n"
- "\t\\r: Wagenrücklauf \\t: Tabulator\n"
- "\t\\v: Vertikal-Tabulator \\\\: Gegenschrägstrich\n\n"
- "Von mir hinzugefügte:\n"
- "\t\\d: Text wird fett ausgegeben \\k: Text wird kursiv ausgegeben\n"
- "\t\\u: Text wird unterstrichen \\i: Text wird inventiert\n"
- "\t\\x: Schaltet alle eventuell eingestellten Modi aus\n\n"
- "Wird keine <Zeichenkette> angegeben, gibt cout eine Leerzeile aus.\n\n"
- }
-
-
- void main (int argc, char **argv)
- {
- if (argc == 2)
- {
- char *arg = *++argv;
-
- if (*arg == '?')
- {
- usage ();
- return;
- }
- char *str = 0;
- int a, s, size = strlen (arg);
-
- for (a = 0 ; a < size ; a++) // Stelle die Länge
- { // des Strings arg = *++argv fest...
- if (*(arg+a) == 92)
- {
- switch (*(arg+a+1))
- {
- case 'd':
- case 'k':
- case 'u':
- case 'i':
- case 'x': size += 3;
- }
- }
- }
- str = new char[size]; // ...und fordere
- if (str == 0) // dementsprechend
- { // Speicher für die Kopie str an
- cout << "Zeichenkette zu lang !!\n";
- return;
- }
- for (a = 0, s = 0 ; a < size ; a++, s++) // Untersuche arg auf
- { // Steuerzeichen
- if (*(arg+a) == 92) // und kopiere ihn
- { // inklusive Steuerzeichen
- switch (*(arg+a+1)) // nach str
- {
- case 'a': *(str+s) = '\a'; a++; break;
- case 'b': *(str+s) = '\b'; a++; break;
- case 'f': *(str+s) = '\f'; a++; break;
- case 'n': *(str+s) = '\n'; a++; break;
- case 'r': *(str+s) = '\r'; a++; break;
- case 't': *(str+s) = '\t'; a++; break;
- case 'v': *(str+s) = '\v'; a++; break;
- case 92 : *(str+s) = '\\'; a++; break;
- case 'd': strcat (str, "\x9b""1m"); a++; s+=2; break;
- case 'k': strcat (str, "\x9b""3m"); a++; s+=2; break;
- case 'u': strcat (str, "\x9b""4m"); a++; s+=2; break;
- case 'i': strcat (str, "\x9b""7m"); a++; s+=2; break;
- case 'x': strcat (str, "\x9b""0m"); a++; s+=2; break;
- default : break;
- }
- }
- else
- *(str+s) = *(arg+a);
- }
- cout << str;
- delete [] str;
- }
- else if (argc == 1)
- cout << "\n";
- else
- usage ();
- }
-