terminate called after throwing an instance of 'std::logic_error' what(): basic_string::_S_construct null not valid