▁only ▁the ▁" low - level " ▁C ▁string ▁handling ▁functionality ▁and ▁convent ions , ▁multiple ▁in compatible ▁designs ▁for ▁string ▁handling ▁classes ▁have ▁been ▁designed ▁over ▁the ▁years ▁and ▁are ▁still ▁used ▁instead ▁of ▁std :: string , ▁and ▁C ++ ▁program mers ▁may ▁need ▁to ▁handle ▁multiple ▁convent ions ▁in ▁a ▁single ▁application . ▁ ▁History ▁The ▁ ▁type ▁is ▁the ▁main ▁string ▁dat atype ▁in ▁standard ▁C ++ ▁since ▁ 1 9 9 8 , ▁but ▁it ▁was ▁not ▁always ▁part ▁of ▁C ++ . ▁From ▁C , ▁C ++ ▁inherited ▁the ▁convention ▁of ▁using ▁null - termin ated ▁strings ▁that ▁are ▁handled ▁by ▁a ▁pointer ▁to ▁their ▁first ▁element , ▁and ▁a ▁library ▁of ▁functions ▁that ▁manipulate ▁such ▁strings . ▁In ▁modern ▁standard ▁C ++, ▁a ▁string ▁literal ▁such ▁as ▁ ▁still ▁denotes ▁a ▁N UL - termin ated ▁array ▁of ▁characters . ▁ ▁Using ▁C ++ ▁classes ▁to ▁implement ▁a ▁string ▁type ▁offers ▁several ▁benefits ▁of ▁autom ated ▁memory ▁management ▁and ▁a ▁reduced ▁risk ▁of ▁out - of - bounds ▁access es , ▁and ▁more ▁intuit ive ▁syntax ▁for ▁string ▁comparison ▁and ▁concaten ation . ▁Therefore , ▁it ▁was ▁strongly ▁tempt ing ▁to ▁create ▁such ▁a ▁class . ▁Over ▁the ▁years , ▁C ++ ▁application , ▁library ▁and ▁framework ▁developers ▁produced ▁their ▁own , ▁in compatible ▁string ▁representations , ▁such ▁as ▁the ▁one ▁in ▁AT & T ' s ▁Standard ▁Com ponents ▁library ▁( the ▁first ▁such ▁implementation , ▁ 1 9 8 3 ) ▁or ▁the ▁