 
 
 
 
 
 
Koska merkkijonojen käsittely on eräs C- kielen heikkouksista, olisi toivottavaa että luokkakirjastoista löytyisi jokin string-luokka.
BC 5.0:n mukana tulee ANSI - yhteensopivaksi mainostettu luokka (??), jossa on mm. seuraavat ominaisuudet:
	// stringt2.cpp  - testataan std:n string-luokkaa
	#include <iostream.h>
	#include <string>
	#include <stdio.h>   // vain printf-testejä varten
	using namespace std;
	
	#define T(s) cout << #s" = |" << s << "|\n" /* T(s3) => s3 = |kissa|        */
	
	int main(void)
	{
	try {
	  string s1("Kissa"),s2("istuu"),s3,vert;
	
	  if ( s1 < s2 ) vert = " < " ; else vert = " >= ";
	  int eq = s1.compare(s2);
	  cout << s1 << vert << s2 << " : "<< eq << '\n';// => Kissa < istuu : -30
	
	  s3 = s1 + " " + s2;                T(s3); // => |Kissa istuu|
	  s3 += " puussa";                   T(s3); // => |Kissa istuu puussa|
	
	  cout << "Anna jono>"; cin >> s3;          // Jos kirjoitetaan Aku Ankka
	  T(s3);                                    // tulostuu nyt Aku ja loput jää!
	  cout << "Anna jono>"; getline(cin,s3,'\n');// Jos kirjoitetaan Aku Ankka
	  T(s3);                                    // tulostuu nyt Aku Ankka
	
	  char c = s1[2];                    T(c);  // => |s|
	  int len = s1.length();             T(len);// => |5|
	  s3 = 'A';                          T(s3); // => |A|
	  s3 = "0123456";
	  s3.append("ABCDEF",2,2);           T(s3); // => |0123456CD|
	  int paikka = s3.find("34");    T(paikka); // => |3|
	  s2 = s3.substr(2,3);               T(s2); // => |234|
	  s3.replace(5,3,"ABCDEF");          T(s3); // => |01234ABCDEFD|
	  s3.remove(5,6);                    T(s3); // => |01234D|
	  s3.insert(5,"56C");                T(s3); // => |0123456CD|
	  s3[2] = 'C';                       T(s3); // => |01C3456CD|
	  s2 = s3.substr(2,3);               T(s2); // => |C34|
	  printf("s2 = |%s|\n",s2.c_str() );        // => |C34|
	  char s4[10];
	  strcpy(s4,s2.c_str());             T(s4); // => |C34|
	  s3.copy(s4,2);                     T(s4); // => |014|
	  s1 = "   Kissa   istuu   ";
	// Seuraavat toimivat BC:n cstrinh.h:ssa olevassa string-luokassa
	//  s2 = s3("C.*5");                   T(s2); // => |C345| C, mitä tahansa, 5
	//  s3 = s1.strip(s1.Both,' ');        T(s3); // => |Kissa   istuu|
	//  s1.to_upper();                     T(s1); // => |   KISSA   ISTUU   |
	  c = s2[12];                          T(c);  // Tulee throw(out_of_range)
	}
	catch ( out_of_range ) { cout << "Liian iso indeksi\n"; }
	  return 0;
	}
	
Borland C++ 5.0:ssa on myös oma string- luokka tiedostossa
cstring.h.  Se on melkein yhteensopiva standardiehdotuksen kanssa.
Valitettavasti edellinen esimerkki ei toimi samalla tavalla inputin
kohdalta.  Toisaalta cstring.h:ssa on paljon hyödyllisiä
lisäominaisuuksia, joita standardista puuttuu.  Kunpa standardienkin
tekijät joskus tekisivät itse oikean ohjelman!  Erityisesti
jää kaipaamaan välilyöntien siivoamista ja vertailua, jossa
isot ja pienet kirjaimet samaistetaan.Voisi kuvitella, että myös seuraavat ominaisuudet olisivat hyödyllisiä:
	  string s1("3"),s2("7"),s3;
	  s3 = s2+"-4";                      T(s3); // => |3|
	  s3 = 'A';                          T(s3); // => |A|
	  s3 = s1+5;                         T(s3); // => |8|
	  s3 = 5+s1;                         T(s3); // => |8|
	  s3 = s1+s2;                        T(s3); // => |10|
	  s3 = "4"+s2;                       T(s3); // => |11|
	  s3 = s2+"4";                       T(s3); // => |11|
	  s3 = string("56")+"7";             T(s3); // => |63|
	  s3 = "K"+s1;                       T(s3); // => |K3|
	  s3 = s1+'5';                       T(s3); // => |8|
	  s3 = s1+'A';                       T(s3); // => |3A|
	//  char ch = s1;                      T(ch); // => |3|
	//  s3 = 5;                            T(s3); // => |5|
	//int i = s3;                        T(i);  // => |5|
 
 
 
 
 
