§ 9. Радковыя велічыні
9.1. Увод, вывад, прысвойванне радковых велічынь
З радковым тыпам даных вы пазнаёміліся ў мінулым годзе. У мове С++ таксама ёсць тып даных, які дазваляе працаваць з радковымі велічынямі. Пераменныя радковага тыпу ў С++ апісваюцца тыпам string (гэтак жа, як і ў Pascal). Для работы з пераменнымі тыпу string патрабуецца падключыць бібліятэку, імя якой супадае з імем тыпу string. Радок складаецца з набору паслядоўна размешчаных сімвалаў і выкарыстоўваецца для захоўвання тэксту. Радкі могуць мець адвольную даўжыню. Радок, у якім няма ніводнага сімвала, называецца пустым. Радок апісваецца наступным чынам: string <імя радка>; Калі радок не змяшчае службовых сімвалаў, то яго можна ўводзіць з дапамогай каманды cin. Калі ў радку змяшчаюцца прабелы, ці сімвалы табуляцыі, ці іншыя службовыя сімвалы, то ў радок будуць перададзены сімвалы да першага службовага, астатнія сімвалы будуць праігнараваны. Для ўводу радка са службовымі сімваламі выкарыстоўваюць каманду getline(cin, s); Першы параметр гэтай каманды — імя патоку для ўводу, а другі — імя пераменнай, у якую будзе запісаны радок. Увод заканчваецца націсканнем клавішы Enter. Сімвал, які адпавядае націсканню гэтай клавішы, счытваецца, але да радка не дабаўляецца. Для вываду радкоў выкарыстоўваецца каманда cout (прыклад 9.1). З дапамогай каманды прысвойвання пераменнай радковага тыпу можна прысвоіць значэнне. Значэнне радковай велічыні запісваецца ў двайным двукоссі. Пусты радок задаецца наступным чынам: s = ""; Запіс тлумачальнага тэксту пры вывадзе ў камандзе cout з’яўляецца радковай канстантай. Да сімвалаў у радку можна звяртацца, выкарыстоўваючы індэкс. Нумарацыя сімвалаў пачынаецца з нуля, s[i] адпавядае i-му сімвалу ў радку s. |
Прыклад 9.1. Увядзём два радкі (з дапамогай розных каманд) і выведзем іх значэнні.
Тэсціраванне: У першым выпадку радок счытваецца з дапамогай каманды getline, таму прачыталіся і вывеліся ўсе сімвалы. У другім выпадку счыталіся і вывеліся сімвалы да прабелу. Калі памяняць месцамі каманды вываду (спачатку cin, потым getline), то вынік будзе наступным: У карыстальніка не будзе магчымасці ўвесці другі радок. У яго будуць счытаны сімвалы, якія засталіся ў буферы пасля ўводу першага радка. Калі ўзнікае неабходнасць выкарыстаць каманду getline адразу пасля каманды cin, то трэба папярэдне ачысціць буфер даных. Гэта можна зрабіць з дапамогай каманды cin.ignore(200,'\n'); Першы параметр паказвае, якую максімальную колькасць сімвалаў трэба праігнараваць, пакуль не сустрэнецца сімвал, вызначаны ў якасці другога параметру. Каманда cin.ignore(); (без параметраў) ігнаруе сімвал '\n'. Гэта можа быць трэба, калі спачатку з дапамогай cin уводзіцца лік, а затым з дапамогай getline счытваюцца радкі.
Без cin.ignore() першы радок будзе пуст. |