павышэнне :: lexical_cast з радка знакаў выключэння

Я пачатковец у выкарыстанні імпульс :: lexical_cast і маюць мінімальнае разуменне яго ўнутраных органаў. Я спрабую зрабіць наступны кідок:

string someString = boost::lexical_cast(sourceString);

Аднак, павышэнне скардзіцца, што прыведзены вышэй код:

[Выключэнне]: дрэнна лексічная літой: Значэнне Тыпу крыніцы не можа быць вытлумачана ў якасці мішэні

Крыніца з'яўляецца радком, аднак гэта заўсёды будзе толькі даўжынёй 1 знак.

Можа хто-небудзь растлумачыць?

Дзякуючы.

1
@set - шкада, што я не пісаў, што частка правільна, я меў на ўвазе, каб аб'явіць яго як сімвал. я мог бы зрабіць гэта, але я проста хацеў бы зразумець, чаму павышэнне не можа пераўтварыць яго правільна. дзякуй
дададзена аўтар czchlong, крыніца
Ці, магчыма, сімвал з = SourceString [0]; ?
дададзена аўтар Mike Seymour, крыніца
Акрамя таго, гэта не будзе кампілявацца, так як вы не можаце пераўтварыць сімвал вынік lexical_cast <паўкокс> ў радок. Пасля таго, як гэта выправіць, код працуе , пакуль SourceString змяшчае адзін знак.
дададзена аўтар Mike Seymour, крыніца
Ці была прычына, што вы робіце, што замест таго, каб нешта накшталт сімвал з = * (sourceString.c_str ()); ? І чаму вы ператвараючы радок у паўкокс і пакласці яго назад у радок?
дададзена аўтар Seth Carnegie, крыніца
@MikeSeymour ці вы маглі б проста зрабіць гэта ...
дададзена аўтар Seth Carnegie, крыніца
Што сказаў @ Mike; <Код> радок не мае канструктар, які прымае сімвал . Вы маглі б зрабіць радок SomeString (падвышэнне :: lexical_cast <сімвал> (SourceString), 1); і прымусіць яго працаваць, але гэта <я> сапраўды доўгі шлях вакол . Ты значна лепш рабіць голец вобл = otherstr [0] .
дададзена аўтар Seth Carnegie, крыніца

1 адказы

When I test it (after fixing the invalid conversion from char to string), the lexical cast succeeds as long as sourceString contains a single character. Here are the test results.

Калі ваш рэальны код не працуе, калі ласка, публікуйце яго; пераважна выкананая праграма, якая паказвае памылку.

4
дададзена
дзякуй за адказ. У мяне ёсць вектар <радок> і я ведаю, што радок з індэксам пазіцыі х будзе толькі адзін знак, так што па сутнасці я раблю наступнае: голец SomeChar = lexical_cast <сімвал> (лексемы [х]); гэта тое, што кідае памылку. На жаль, варта выклалі, што раней. Дзякуючы.
дададзена аўтар czchlong, крыніца
ды Майк, вы маеце рацыю, мая здагадка было няслушным. Дзякуй!
дададзена аўтар czchlong, крыніца
Можа быць, вы павінны праверыць свае здагадкі; дадаць (лексемы сцвярджаюць [х] .length() == 1); перад кідком, каб пераканацца, што вы ведаеце, на самай справе, што адбываецца.
дададзена аўтар Mike Seymour, крыніца