Жолдар - таңбалардан тұратын сөздер, сондықтан олар кейіпкерлердің реті ретінде белгілі. С ++ жүйесінде жолдарды жасау мен пайдаланудың екі жолы бар: 1) Шар массивтерін жасау және оларды жол ретінде өңдеу 2) string
нысанын жасау арқылы
Алдымен жолды құрудың осы екі жолын талқылап, содан кейін қандай әдіс жақсы және неге екенін көреміз.
1) Таңбалардың массасы - C Strings деп те аталады
1-мысал:
Декларация кезінде char array инициализа болған қарапайым мысал.
#include <iostream> аттар кеңістігін пайдалану std; int main () {char book [50] = «Мұз және өрт туралы ән»; cout << кітабы;0 қайтару; }
Шығару:
Мұз және әуен әні
2-мысал: Пайдаланушы енгізуін жол ретінде алу
Бұл пайдаланушының кіруін оқып-үйренудің тиімсіз әдісі деп қарастыруға болады, неге? Өйткені, егер пайдаланушыға кіріс жолын cin
пайдаланып оқыған болсақ, онда жолдың бірінші сөзі ғана cin
сақталады және демалуға болмайды. Гин функциясы жолдағы бос орынды бөлгіш ретінде қарастырады және кейінгі бөлігін елемейді.
#include <iostream> аттар кеңістігін пайдалану std; int main () {кітабы [50];cout << «Сіздің сүйікті кітап атын енгізіңіз:»;// пайдаланушының енгізуін оқугин кітабы;cout << Сіз кірді: << кітап;0 қайтару; }
Шығару:
Өзіңіздің сүйікті кітап атын енгізіңіз: Роджер Экройдтың өлімі Сіз енгіздіңіз:
Сіз тек қана «The» кітабында басып алынғанын және ғарышқа назар аудармаған соң қалған бөлігін ғана көре аласыз. Сонда қалай күресуге болады? Бұл үшін пайдаланушыға енгізген толық жолды оқитын cin.get
функциясын қолдануға болады.
3-мысал: cin.get арқылы пайдаланушы кіріс жолын түсірудің дұрыс әдісі
#include <iostream> аттар кеңістігін пайдалану std; int main () {кітабы [50];cout << «Сіздің сүйікті кітап атын енгізіңіз:»; // пайдаланушының енгізуін оқуcin.get (кітап, 50);cout << Сіз кірді: << кітап;0 қайтару; }
Шығару:
Өзіңіздің сүйікті кітап атын енгізіңіз: Роджер Экройдтың өлімі Сіз кірді: Роджер Экроидтің өлімі
Бұл әдістің төмендеуі
1) массивтің өлшемі тіркелген, яғни ол арқылы жасалған жолдың өлшемі мөлшерде белгіленеді, оның орындалу уақытында көп жадыға бөлуге болмайды. Мысалы, 10 өлшемі бар таңба жиынын жасағаныңызды және 15-ке дейінгі жолды енгізген пайдаланушы соңғы бес таңбаны жолдан қысқартатындығын айтады.
Екінші жағынан, егер пайдаланушы кірісін орналастыру үшін үлкен массив жасасаңыз, онда пайдаланушы кірісі кіші болмаса және массив қажет болса әлдеқайда үлкен болса, жад босатылады.
2) Бұл әдіспен массив үшін жасалған құрылымды функцияларды ғана пайдалануға болады, олар жолдарды манипуляциялауға көп көмектеспейді.
Бұл мәселелерді шешу қандай?
Жолдың нысанын пайдаланып жолды жасай аламыз. Мұны қалай істей алатынымызға көз жеткізіңіз.
C ++ жолының нысаны
Осы уақытқа дейін C ++-де сызықтарды мастер-кластар арқылы қалай өңдеу керектігін көрдік. C ++ - жол объектілерінде жолдарды өңдеудің басқа және жақсы әдісін көруге мүмкіндік береді.
#include <iostream> аттар кеңістігін пайдалану std; int main () {// Міне, біз жолдың объектісін жасаймызstring str;cout << «Жолды енгізіңіз:»;/ * Бұл пайдаланушы кірісін алу үшін қолданылады * және оны көшеге қойыңыз * /getline (cin, str);cout << «Сіз кірді:»;cout << str << endl;/ * Бұл функция таңбаны қосады жолдың соңы * / str.push_back ('A');cout << «push_back кейінгі жол:» << str << endl;/ * Бұл функция таңбаны өшіреді жолдың соңы * /str.pop_back ();cout << «pop_back кейінгі жол:» << str << endl;0 қайтару; }
Шығару:
Жолды енгізіңіз: XYZ Сіз енгіздіңіз: XYZ Push_back кейінгі жол: XYZA Pop_back кейінгі жол: XYZ
Бұл әдісті пайдаланудың артықшылығы мынада, сіз жолдың өлшемін жария етпеуіңіз керек, өлшем мөлшері орындалу уақытында анықталады, сондықтан бұл жадты басқарудың жақсы әдісі. Жадтың орындалу уақытында динамикалық түрде бөлінген, сондықтан жады ешқандай жұмсалмайды.
Пікір қалдыру Жауапты