Karakterláncokról, szövegek és szövegdarabok feldolgozásáról lesz szó.
Karakter
- egy betűt vagy írásjelet reprezentáló érték
- C++-ban a
chartípus 1B-os (8 bites) egész, általában egy-egy karaktert tárol - minden betűnek lesz számértéke (ld. ASCII táblázat - American Standard Code for Information Interchange)
Karakterlánc (string):
- egy szövegdarab úgy lesz tárolva, hogy a karakterei egymás mellé kerülnek egy tömbbe, majd ezeket követi egy 0 értékű bájt.
Pl. char s[100] = "hello!";
'h' 'e' 'l' 'l' 'o' '!' '\0'
104 101 108 108 111 33 0
s[0] s[1] s[2] s[3] s[4] s[5] s[6]
Karakterkonstansok:
' ', 'a', '0', '.'stb.'\n'- LineFeed (LF) - ez jelzi a sorok végét'\0'- nullkarakter - ez zárja a karakterláncokat'\t'- vízszintes tab'\r'- carriage return (CR)'\\'- backslash karakter
Szöveg-konstansok:
"hello", "a", "", "abc\ndef"- mindegyiknek a végén van nullkarakter (
'\0')
Példa
| |
Stringek inicializálása:
char s1[100] = "abc";
s1[0] s1[1] s1[2] s1[3] s[99]
'a' 'b' 'c' 0 ... 0
char s2[] = "abc";
- ekkor s2 egy négyelemű tömb
s2[0] s2[1] s2[2] s2[3]
'a' 'b' 'c' '\0'
Kiírás:
char s[100];
// ...
cout << s << endl; // kiírja a betűket az első '\0'-ig (azt már nem)
Beolvasás:
Egy szó beolvasása:
| |
Egész sor beolvasása:
| |
Vagy:
| |
Mit írnak ki az alábbi programok (és miért), ha a bemenet:
abc def
123 456
| |
| |
Megjegyzések: a második változat esetén s2 üres string lesz, mert az első get(...)
által otthagyott újsor miatt a második get(...) rögtön leáll (nem is várja meg a
program, hogy beírjuk a második sort). Ahhoz, hogy két sort olvasson, a két get(...)
között el kell fogyasztani a bemenetről az újsor karaktert egy üres get() vagy ignore()
hívással:
cin.get(s1, 200);
cin.ignore();
// vagy: cin.get();
cin.get(s2, 200);
Feladat
Olvassunk be egy n term számot. A következő sorról olvassunk be egy mondatot. Írjuk ki a mondatot n-szer!
Példa
bemenet:
5
geza kek az eg
kimenet:
geza kek az eg
geza kek az eg
geza kek az eg
geza kek az eg
geza kek az eg
| |
Feladat
Beolvasunk egy n természetes számot (n<=10), majd n darab sort (sor hossza <= 100). Írjuk ki a sorokat fordított sorrendben.
Példa
bemenet:
3
abcd
1234
harmadik
kimenet:
harmadik
1234
abcd
| |