Տողեր
Տողերի ներկայացման համար 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()
ֆունկցիայի մասին հետո։ ---