Как правильно перевести char* в std::string? Почему получается строка из одного символа?

Передаю в функцию указатель на char[32]. Там записано, например 'AFL',указатель же указывает только на 'A'. Соответственно при: name_ = *name; Получаю name_ == "A". Как получить всю строку?

void PlanFor4D::createPlanFromKST(P4_POLETA_NBT * p4_poleta_nbt, char * name)    
{
  //do something

  name_ = *name; //name указывает на 'AFL', но в name_ записывается "A", а нужно "AFL"
}

Ответы (1 шт):

Автор решения: KoVadim

у name тип char*, а у *name тип char. И соответственно вызываются разные функции класса std::string.

для name

std::string::operator=(char const*)

для *name

std::string::operator=(char)

Поэтому, просто пишите правильно

name_ = name; // звездочки нет!

(я вначале было подумал, что в name хранится в utf-16, но это было бы слишком уже:) но можно было бы получить похожий эффект)

→ Ссылка