Տողեր

Տողերի ներկայացման համար C++ լեզուն ներդրված տիպ չի առաջարկում։ Բայց տեքստերի հետ աշխատելու համար ստանդարտ գրադարանում իրականացված է string դասը։ Այդ դասում սահմանված են տողերի հետ կատարվող հիմնական գործողությունները, ինչպիսիք են, օրինակ, տողերի միակցումը, ենթատողի առանձնացումը, տողի նիշերի փոփոխությունը և այլն։

string դասում տողը ներկայացված է որպես նիշերի (character) հաջորդականություն։ Տողի երկարությունը՝ նրանում մասնակցող նիշերի ընդհանուր քանակը, վերադարձնում են string դասի length() և size() մեթոդները։ Օրինակ․

string s0 = "To be, or not to be?";
int e = s0.length();
cout << e << endl;  // => 20

Տողի առանձին նիշերին կարելի է դիմել կամ ինդեքսավորման [] գործողությամբ, կամ at() մեթոդով։ Նիշերը ինդեքսավորվում են 0֊ից սկսած։ Օրինակ, s0 տողի վերջին նիշը արտածելու համար պետք է գրել․

char a = s0[e-1];
cout << a << endl;  // => ?

Ի տարբերություն [] գործողության, at() մեթոդը ստուգում է տրված ինդեքսի՝ տողի սահմաններում լինելը։ Օրինակ, եթե փորձենք at()֊ին տալ մի ինդեքս, որն ավելի մեծ է կամ հավասար, քան տողի երկարությունը, ապա կստանանք out_of_range տիպի բացառություն։ (Բացառությունների մասին ավելի մանրամասն տես Բացառություններ գլխում։)

char b = s0.at(e);
cout << b << endl;

Երկու տողեր կարելի է իրար կցել + գործողությամբ։ Այս գործողությունն իր արգումենտները չի փոխում և վերադարծնում է նոր կառուցված տող։ Իսկ եթե պետք է տրված տողի «պոչից» կցել մեկ այլ տող, օգտագործվում է append() մեթոդը։ Նույն գործն է անում նաև += գործողությունը։ Օրինակ․

string s1 = "Alas, poor Yorick!";
s1.append(" I knew him,");
s1 += " Horatio:";

Տողից մի հատված՝ ենթատող առանձնացնելու համար է նածատեսված substr() մեթոդը։ Այն ունի երկու պարամետր․ ենթատողի սկզբի ինդեքսը և երկարությունը։ Եթե երկարությունը տրված չէ, ապա ենթատողը համարվում է սկզբի ինդեքսից մինչև տողի վերջը։ !!! Օրինակ․

string ws = "William Shakespeare";
cout << ws.substr(0, 7) << endl;  // => William
cout << ws.substr(8) << endl;     // => Shakespeare

Տողում մի որևէ ենթատող որոնելու համար օգտագործում ենք find() մեթոդը։ Այն վերադարձնում է գտնված ենթատողի առաջին նիշի ինդեքսը։ Եթե որոնումը ձախողվել է, ապա վերադարձնում է string դասի npos հատուկ արժեքը։

string s3 = "Alas, poor Yorick!";
int ix = s3.find("Yorick");
cout << ix << endl;  // => 11

Ենթատողի որոնումը կարելի է կատարել ոչ միայն տողի սկզբից, այլև ցանկացած դիրքից սկսած՝ որոնման սկզբի ինդեքսը տալով որպես find() մեդոդի արկրորդ արգումենտ։

Տողում մի որևէ նիշ որոնելու համար string դասն ունի find_first_of() մեթոդը։ Այն նույնպես վերադարձնում է որոնվող նիշի առաջին ինդեքսը։ Օրինակ․

string s3 = "Alas, poor Yorick!";
int cx = s3.find_first_of('o');
cout << cx << endl;  // => 7

Տողերի համար նույնպես սահմանված են հոսքից կարդալու >> և հոսքում գրելու << գործողությունները։ Դա հնարավորություն է տալիս «բնական» գրառմամբ ներմուծման ու արտածման գործողություններ կատարել string տիպի օբյեկտների հետ։ Օրինակ․

string name;
cin >> name; // կարդալ cin֊ից
cout << "Hi! I am " << name << endl;

--- getline() ֆունկցիայի մասին հետո։ ---

results matching ""

    No results matching ""