Как правильно перевести 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, но это было бы слишком уже:) но можно было бы получить похожий эффект)