https://www.tutorialspoint.com/cplusplus/cpp_strings.htm
Низи од знациC++ овозможува работа со текстуални податоци на неколку начини.
- koристење на класата string
- работа со текстуални податоци преку нивно третирање како низа од знаци (низа од податок char)
Низи од знаци се креираат на ист начин како и останатите еднодимензионални низи:
char ime[N];
ime го означува името на променливата,

На овој начин, кога сакаме да печатиме податоци, програмата знае дека треба да печати знаци сé додека не стигне до знакот '\0'. Сите знаци по '\0' се неважни и не се користат.
C++ овозможува иницијализација на овие низи од знаци на 2 начини:
char name[] = {'M', 'a', 'r', 'k', 'o', '\0'}; //treba da se navede '\0'
char name[] = "Marko"; //se podrazbira '\0'
И двата начина креираат низа name со големина 6. Низата го содржи текстуалниот податок "Marko" и null знак '\0' за означување на крај на текстот. Бидејќи низите имаат големина која се дефинира при нивното креирање, не е дозволено подоцнежно менување на нивната вредност преку користење на операторот '=' (кај string класата ова е дозволено - таа работи со динамички резервирана меморија).
char name[] = "Marko";
name = "Petar"; //GRESHKA!
Следната програма прикажува како може да се користат низите од знаци во комбинација со потоците cin и cout:
#include <iostream>
using namespace std;
int main()
{
char array[] = "Darko";
array[0] = 'M';
cout << array << endl; // pechati 'Marko'
char text[100];
cout << "Vnesi eden zbor: ";
cin >> text; //vnesi eden zbor
cout << text; //go pechati vneseniot zbor
return 0;
}
Ова е најважниот дел за разбирање:
cin.getline(): Го чита текстот И го отстранува карактерот за нов ред (\n) од баферот (меморијата). Следниот внес ќе започне „на чисто“.cin.get(): Го чита текстот, но го ОСТАВА карактерот за нов ред (\n) во меморијата.
Зошто е ова важно? Ако се обидеш да повикаш
cin.get()двапати по ред, вториот пат програмата нема ни да ти дозволи да пишуваш, бидејќи веднаш ќе го прочита преостанатиот\nод првиот пат и ќе мисли дека си завршил.
Enter a тext: Programming is fun. You entered: Programming is fun.
#include <iostream>
using namespace std;
int main()
{
// Declaring a string object
string str;
cout << "Enter a string: ";
getline(cin, str);
cout << "You entered: " << str << endl;
return 0; }Enter a string: Programming is fun. You entered: Programming is fun.

- isalpha(ch) – true ако ch е алфабетски знак инаку false
- isupper(ch)- true ако ch е голема буква инаку false
- islower(ch)- true ако ch е мала буква инаку false
- isdigit(ch)- true ако ch е цифра од 0 до 9 инаку false
- toupper(ch), tolower(ch) – претвораат во мала т.е. во голема буква
strncpy(t, b, 4);?
Функцијата strncpy со аргумент 4 вели: "Оди кај стрингот b ("vtora niza"), земи ги првите 4 букви (v, t, o, r) и стави ги во првите 4 места на t."
Клучниот момент: Таа само ги пребришува тие 4 места. Не ја допира меморијата после четвртиот карактер и не става ознака за крај (\0).
strncpy - копира букви како робот. Ако не ја „затвориш“ низата со \0, таа ќе го покажува и стариот текст што останал во меморијата.
1. What character ends all strings?
A. '.'
B. ' '
C. '\0'
D. '\n'
2. Which of the following reads in a string named x with one hundred characters?
A. cin.getline(x, 100, '\n');
B. cin.getline(100, x, '\n');
C. readline(x, 100, '\n');
D. read(x);
3. Which of the following functions compares two strings?
A. compare();
B. stringcompare();
C. cmp();
D. strcmp();
4. Which of the following adds one string to the end of another?
A. append();
B. stringadd();
C. strcat();
D. stradd();

No comments:
Post a Comment