2011-10-28 38 views
1

我是使用boost :: lexical_cast的新手,对它的内部知识了解甚少。我尝试做如下转换:boost :: lexical_cast从字符串到字符的异常

string someString = boost::lexical_cast<char>(sourceString); 

然而,升压抱怨,上面的代码是:

[例外]:坏词法投:源类型的值不能被解释为目标

源是一个字符串,但它总是只有1个字符长。

请问有人能解释一下吗?

谢谢。

+1

是否有你这样做的原因,而不是像'char c = *(sourceString.c_str());'?为什么你把一个字符串变成一个字符并把它放回到一个字符串中? –

+3

或者'char c = sourceString [0];'? –

+0

@MikeSeymour或者你可以做到这一点... –

回答

4

当我测试它时(修复从charstring的无效转换之后),只要sourceString包含单个字符,词法转换就会成功。 Here are the test results.

如果您的真实代码无效,请发布更多内容;最好是一个演示错误的可运行程序。

+0

感谢您的回答。我有一个向量,我知道在位置索引x的字符串只会是一个字符,所以基本上我在做以下操作:char someChar = lexical_cast (tokens [x]);这是抛出错误的原因。对不起,应该在之前发布过。谢谢。 – czchlong

+2

也许你应该检查你的假设;在转换之前添加'assert(tokens [x] .length()== 1);'以确保你所知道的实际上是发生了什么。 –

+0

是的,迈克你是正确的,我的假设是不正确的。谢谢! – czchlong