224 Godzina 15
Ostatni znak ' \0' stanowi znacznik końca tekstu. Taki sposób podawania tekstu, znak po znaku, jest bardzo niewygodny. C++ pozwala na wpisywanie tekstów do łańcuchów w skróconej formie:
char Czesc[] = "Hello World";
Jednak stosując ten zapis musisz pamiętać o dwóch rzeczach:
□ Zamiast klamer i apostrofów wykorzystuje się znaki cudzysłowu na początku i na końcu tekstu.
□ Nie dodaje się pustego znaku (nuli) końca tekstu. Kompilator dodaje go automatycznie.
W sumie łańcuch Hello World zajmuje 12 bajtów - 11 bajtów na tekst i 1 bajt na znak końca (nuli).
Dopuszczalne jest tworzenie niezainicjalizowanych tablic znakowych. Tak jak w przypadku innych tablic ważne jest, aby nie wstawiać do niej więcej niż wynosi jej rozmiar.
Listing 15.6 demonstruje wykorzystanie niezainicjalizowanego bufora znakowego.
1; // Listing 15.6 tablica znakowa
2:
3; #include <iostream.h>
4:
5: int main()
6: ł
7: char bufor[80];
8: cout « "Podaj tekst:
9: cin » bufor;
10: cout « "Oto zawartość bufora: " « bufor « endl;
11: return 0;
12: }
Podaj tekst: Hello World Oto zawartość bufora: Hello
ANALIZA:
W linii 7 deklarujemy bufor na 80 znaków. Wystarczy on do przechowania 79 znakowego tekstu i znaku końca.
W linii 8 użytkownik jest proszony o wprowadzenie tekstu, który jest następnie wstawiany do bufora, cin automatycznie dostawi do wprowadzonego łańcucha znak końca tekstu.
Napotkaliśmy na dwa problemy. Pierwszy polega na tym, że jeśli użytkownik poda tekst dłuższy niż 79 znaków, to cin będzie pisać poza buforem. Drugi jest widoczny na wydruku. Jeżeli użytkownik wpisze w tekście spację, to cin potraktuje ten znak jako koniec tekstu i przestanie zapisywać do bufora.
Ostatni znak ' \0' stanowi znacznik końca tekstu. Taki sposób podawania tekstu, znak po znaku, jest bardzo niewygodny. C++ pozwala na wpisywanie tekstów do łańcuchów w skróconej formie:
char Czesc[] = "Hello World";
Jednak stosując ten zapis musisz pamiętać o dwóch rzeczach:
□ Zamiast klamer i apostrofów wykorzystuje się znaki cudzysłowu na początku i na końcu tekstu.
□ Nie dodaje się pustego znaku (nuli) końca tekstu. Kompilator dodaje go automatycznie.
W sumie łańcuch Hello World zajmuje 12 bajtów - 11 bajtów na tekst i 1 bajt na znak końca (nuli).
Dopuszczalne jest tworzenie niezainicjalizowanych tablic znakowych. Tak jak w przypadku innych tablic ważne jest, aby nie wstawiać do niej więcej niż wynosi jej rozmiar.
Listing 15.6 demonstruje wykorzystanie niezainicjalizowanego bufora znakowego.
1: // Listing 15.6 tablica znakowa
2:
3: #include <iostream.h>
4:
5: int main()
6: <
7: char bufor[80];
8: cout « "Podaj tekst:
9: cin » bufor;
10: cout « "Oto zawartość bufora: " « bufor « endl;
11: return 0;
12: )
Podaj tekst: Hello World Oto zawartość bufora: Hello
ANALIZA
[ W linii 7 deklarujemy bufor na 80 znaków. Wystarczy on do przechowa-■ nia 79 znakowego tekstu i znaku końca.
W linii 8 użytkownik jest proszony o wprowadzenie tekstu, który jest następnie wstawiany do bufora, cin automatycznie dostawi do wprowadzonego łańcucha znak końca tekstu.
Napotkaliśmy na dwa problemy. Pierwszy polega na tym, że jeśli użytkownik poda tekst dłuższy niż 79 znaków, to cin będzie pisać poza buforem. Drugi jest widoczny na wydruku. Jeżeli użytkownik wpisze w tekście spację, to cin potraktuje ten znak jako koniec tekstu i przestanie zapisywać do bufora.