
//
// To jest oprzykładowy kod z podrozdziału 27.5 „Łańcuchy w stylu języka C” książki
// "Programowanie. Teoria i praktyka z wykorzystaniem C++" Bjarne'a Stroustrupa.
//

#include <string>

using namespace std;

//------------------------------------------------------------------------------

char* p = "asdf";
char s[ ] = "asdf";

//------------------------------------------------------------------------------

int main()
{
    const char* s1 = "asdf";
    const char* s2 = "asdf";

    if (s1==s2) {        /* s1 i s2 wskazują tę samą tablicę */
        /* (zwykle nie o to chodzi programiście) */
    }

    if (strcmp(s1,s2)==0) {    /* s1 i s2 przechowują takie same znaki */

    }

    strcmp("pies","pies")==0;
    strcmp("małpa","dodo")<0;    /* „małpa” występuje w słowniku za „dodo”. */
    strcmp("świnia","krowa")>0;     /* „świnia” występuje w słowniku za słowem „krowa”. */

    // Długość łańcuchów w stylu języka C można sprawdzić za pomocą funkcji strlen():

    int lgt = strlen(s1);

    // Jeden łańcuch w stylu języka C można skopiować do drugiego (włącznie z końcowym zerem).

    char s3[10];
    strcpy(s3,s2);    /* Kopiuje znaki z s2 do s3 */

    string id = "nazwa";
    string addr = "nazwa.com";
    string s = id + '@' + addr;
}

//------------------------------------------------------------------------------

char* cat(const char* id, const char* addr)
{
    int sz = strlen(id)+strlen(addr)+2;
    char* res = (char*) malloc(sz);
    strcpy(res,id);
    res[strlen(id)+1] = '@';
    strcpy(res+strlen(id)+2,addr);
    res[sz-1]=0;
    return res;
}

//------------------------------------------------------------------------------
