https://www.tutorialspoint.com/cplusplus/cpp_strings.htm
Низи од знациC++ овозможува работа со текстуални податоци на неколку начини.
- koристење на класата string
- работа со текстуални податоци преку нивно третирање како низа од знаци (низа од податок char)
Низи од знаци се креираат на ист начин како и останатите еднодимензионални низи:
char ime[N];
ime го означува името на променливата,
N го означува бројот на знаци (од колку елементи е составена низата ime).
Еден од овие N знаци (зависно од текстуалниот податок кој ќе се чува во низата) ќе биде еднаков на '\0' - и ќе претставува т.н. null знак или null terminator. Овој знак е потребен за да го означи крајот на текстуалниот податок и да ни овозможи во низа со големина N да чуваме текстуални елементи кои се пократки од N знаци.
На следната слика е претставен начинот на сместување на текстуални податоци во низата од знаци name[13]:
На овој начин, кога сакаме да печатиме податоци, програмата знае дека треба да печати знаци сé додека не стигне до знакот '\0'. Сите знаци по '\0' се неважни и не се користат.
C++ овозможува иницијализација на овие низи од знаци на 2 начини:
char name[] = {'D', 'a', 'r', 'k', 'o', '\0'}; //treba da se navede '\0'
char name[] = "Darko"; //se podrazbira '\0'
И двата начина креираат низа name со големина 6. Низата го содржи текстуалниот податок "Darko" и null знак '\0' за означување на крај на текстот. Бидејќи низите имаат големина која се дефинира при нивното креирање, не е дозволено подоцнежно менување на нивната вредност преку користење на операторот '=' (кај string класата ова е дозволено - таа работи со динамички резервирана меморија).
На пример, следниов код е погрешен:
char name[] = "Darko";
name = "Petar"; //GRESHKA!
Следната програма прикажува како може да се користат низите од знаци во комбинација со потоците cin и cout:
#include <iostream>
using namespace std;
int main()
{
char array[] = "Darko";
array[0] = 'M'; // niza
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;
}
char name[] = "Darko";
name = "Petar"; //GRESHKA!
Следната програма прикажува како може да се користат низите од знаци во комбинација со потоците cin и cout:
#include <iostream>
using namespace std;
int main()
{
char array[] = "Darko";
array[0] = 'M'; // niza
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;
}
Marko
Vnesi eden zbor: Jana
Jana
Marko
Vnesi eden zbor: Prograsmki jazici
Programski
Наредбата cin >> text; чита еден збор внесен од страна на корисникот и, истиот го сместува во променливата text. На крајот од текстот, автоматски, се додава и null знак
cin чита податоци до првото појавување на празно место, tab или знак за нов ред,C++ String to read a word
C++ program to display a string entered by user.
#include <iostream>
using namespace std;
int main()
{
char str[100];
cout << "Enter a string: ";
cin >> str;
cout << "You entered: " << str << endl;
cout << "\nEnter another string: ";
cin >> str;
cout << "You entered: "<<str<<endl;
return 0;}
Enter a string: C++ You entered: C++ Enter another string: Programming is fun. You entered: Programming
Функцијата cin.getline(char[], N) - се користи кога читаме цел ред текст, а не само еден збор
Во C++, секогаш кога користиме наводници за креирање на текстуален податок (cout << "Darko"), во позадина всушност се работи со C string-ови (низи од знаци со null знак). Кога креираме променлива од тип string и, преку операторот '=', и доделуваме текстуална вредност (string str = "Darko"), програмата автоматски го претвора податокот од низа од знаци со null знак во string.
C++ String to read a line of text
#include <iostream>
using namespace std;
int main()
{
char str[100];
cout << "Enter a string: ";
cin.get(str, 100);
cout << "You entered: " << str << endl;
return 0;}
Enter a string: Programming is fun. You entered: Programming is fun.
C++ string using string data type
#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.
Постојат 7 основни функции кои овозможуваат работа со текстуални низи (сите дефинирани во датотеката "<cstring>"):
Функции за работа со знаци:
- 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) – претвораат во мала т.е. во голема буква
- 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) – претвораат во мала т.е. во голема буква
Следнава програма употребува некои од функциите споменати погоре:
B. "Static String"
C. 'Static String'
D. char string[100];
2. What character ends all strings?
A. '.'
B. ' '
C. '\0'
D. '\n'
3. 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);
4. Which of the following functions compares two strings?
A. compare();
B. stringcompare();
C. cmp();
D. strcmp();
5. Which of the following adds one string to the end of another?
A. append();
B. stringadd();
C. strcat();
D. stradd();
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | #include <iostream> #include <cstring> using namespace std; int main() { char a[] = "prva niza" ; char b[] = "vtora niza" ; char c[] = "tekst" ; char d[] = "tekst" ; cout << strlen (a) << endl; //pechati '9' cout << strlen (c) << endl; //pechati '5' char t[100]; strcpy (t, "Nekoja vrednost" ); //t="Nekoja vrednost" strcpy (t, "Neshto drugo" ); //t="Neshto drugo" strcpy (t, a); //t="prva niza" strncpy (t, b, 4); //t="vtor niza" (ne se kopira '\0') t[4] = '\0' ; //t="vtor" strcat (t, b); //t="vtorvtora niza" cout << t << endl; //pechati 'vtorvtora niza' cout << strcmp (t, a) << endl; //pechati '1' cout << strcmp (c, d) << endl; //pechati '0' return 0; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #include <iostream> #include <string> using namespace std; int main() { string a, b; a = "prva" ; b = "vtora" ; cout << a.size() << endl; //pechati '4' cout << b.size() << endl; //pechati '5' a = a + " " + b; cout << a << endl; //pechati 'prva vtora' b = b + b; cout << b << endl; //pechati 'vtoravtora'; return 0; } |
1. Which of the following is a static string?
A. Static StringB. "Static String"
C. 'Static String'
D. char string[100];
2. What character ends all strings?
A. '.'
B. ' '
C. '\0'
D. '\n'
3. 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);
4. Which of the following functions compares two strings?
A. compare();
B. stringcompare();
C. cmp();
D. strcmp();
5. 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