Я новичок в использовании boost :: lexical_cast и минимально понимаю его внутреннее устройство. Я пытаюсь сделать следующее приведение:
string someString = boost::lexical_cast<char>(sourceString);
Однако boost жалуется, что приведенный выше код:
[Исключение]: неверное лексическое приведение: значение исходного типа не может быть интерпретировано как целевое.
Источником является строка, однако она всегда будет иметь длину всего 1 символ.
Может кто-нибудь объяснить?
Спасибо.
char c = *(sourceString.c_str());
? И почему вы превращаете строку в символ и снова помещаете ее в строку? - person Seth Carnegie   schedule 28.10.2011char c = sourceString[0];
? - person Mike Seymour   schedule 28.10.2011char
результатlexical_cast<char>
в строку. Как только я это исправлю, код будет работать, покаsourceString
содержит единственный символ. - person Mike Seymour   schedule 28.10.2011string
не имеет конструктора, принимающегоchar
. Возможно, вы могли бы сделатьstring someString(boost::lexical_cast<char>(sourceString), 1);
и заставить его работать, но это действительно долгий путь. Тебе гораздо лучше делатьchar str = otherstr[0]
. - person Seth Carnegie   schedule 28.10.2011