Назначение v
действительно. Временные объекты не уничтожаются до тех пор, пока не закончится конец всего оператора (когда достигнут ;
), то есть после завершения присваивания.
Однако в этом конкретном примере использование c_str()
является избыточным и неэффективным. Требуется итерация данных char
для определения их длины, которую временная string
, возвращаемая substr()
, уже знает, поэтому просто присвойте возвращенные string
как есть:
string v = s.substr(0, 50);