content23









Stałe tekstowe (stringi)





W językach programowania bardzo często posługujemy się stałymi tekstowymi będącymi ciągami znaków. Zwane są one czasem napisami, czasem łańcuchami znaków.

Spotkaliśmy się już z takimi stałymi:

"Witamy na pokładzie"


W języku angielskim taka stała tekstowa nazywa się to krótko: string.

W całej tej książce pierwotnie posługiwałem się nazwą "ciąg znaków". Nazwa ta dziesiątki razy odmieniana była przez wszystkie przypadki, co nie zawsze bywało zręczne. Wreszcie zrezygnowałem. Nie znam bowiem programisty, który by na to "coś" mówił inaczej jak: string.

A zatem:

 String, czyli stała tekstowa, to ciąg znaków ujęty w cudzysłów.


Oto przykłady:

"taki string"
"Pożar na pokładzie"
"Alarm 3 stopnia"


Ponieważ string jest ciągiem znaków, więc obowiązują podobne zasady, jak opisane przy stałych znakowych: Jeśli chcemy w tekście (stringu) zastosować znak nowej linii, to wystarczy napisać \n w żądanym miejscu.

"Pożar \n na pokładzie"


Zdziwiłeś się dlaczego nie ma teraz dwóch apostrofów po obu stronach znaku \n? Nic w tym dziwnego - nie ma także apostrofów obok liter: p o z   itd.

Stringi są w pamięci przechowywane jako ciąg liter, a na samym końcu tego ciągu dodawany jest znak o kodzie O, czyli znak NULL. Tak kompilator oznacza sobie koniec stringu.

Ogranicznikiem stringu są znaki cudzysłowu "...." Ponieważ cudzysłów ma takie szczególne znaczenie dla stringu, dlatego nie można już go użyć dodatkowo wewnątrz stringu. W wypadku stałych znakowych problem ten mieliśmy z apostrofami. Do pomocy mamy jednak identyczny chwyt ze znakiem bekslesz:

cout << "Lecimy promem \"Columbia\" nad Oceanem Spokojnym";

co na ekranie pojawi się jako

Lecimy promem "Columbia" nad Oceanem Spokojnym




Mówiliśmy kiedyś, że w języku C++ w prawie każdym miejscu instrukcji można przerwać pisanie, przejść do następnej linii i kontynuować instrukcję.

To słowo "prawie" dotyczy między innymi pisania stringów. Tutaj nie można przerwać pisania. Jeśli kompilator zobaczył w linijce cudzysłów otwierający string, to musi w tej samej linijce znaleźć cudzysłów zamykający.


Co zrobić jeśli string jest tak długi, że nie mieści się w jednej linijce?


Jest na to sposób. Spójrz poniżej: w kilku linijkach zapisaliśmy tu string, który kompilator traktuje jako jedną całość.

"Cały ten tek"
"st jest traktowa"
"ny jako jeden dłu" "gi string"


Jak widać w ostatniej linijce - nawet w tej samej linii można zamknąć cudzysłów, a potem bezpośrednio go otworzyć - i kompilator uzna to za jeden string. (Zauważ, że nie ma żadnych przecinków).
Zapamiętaj:


Bezpośrednio przylegające do siebie stringi, kompilator łączy w jeden.


Wynika stąd też, że zamiast pisać

cout << "Mój drogi Kapitanie, który "
<< "podzespół sprawdzić ? " ;

można zapisać

cout << "Mój drogi Kapitanie, który "
"podzespół sprawdzić ? " ;

oczywiście dlatego, że są to stringi, które bezpośrednio mogą do siebie przylegać (bo akurat nie wstawiliśmy między nimi żadnego wypisywania na ekran wartości jakiejś zmiennej).











Wyszukiwarka

Podobne podstrony:
content
content
content
content
content
content
content
content
content
function domnode get content
content
content
content
content
content
content

więcej podobnych podstron