【问题标题】:boost::lexical_cast from string to char exceptionboost::lexical_cast 从字符串到字符异常
【发布时间】:2011-10-28 14:20:43
【问题描述】:

我不熟悉使用 boost::lexical_cast 并且对其内部结构了解甚少。我正在尝试做以下演员:

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

但是,boost 抱怨上面的代码是:

[异常]:错误的词法转换:源类型值无法解释为目标

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

谁能解释一下?

谢谢。

【问题讨论】:

  • 你这样做有什么原因而不是像char c = *(sourceString.c_str());这样的东西吗?你为什么要把一个字符串变成一个字符然后把它放回一个字符串?
  • 或者char c = sourceString[0];
  • @MikeSeymour 或者你可以这样做......
  • @set - 对不起,我没有正确地写那部分,我打算将它声明为一个字符。我可以这样做,但我只想了解为什么 boost 无法正确转换它。谢谢
  • 另外,这不会编译,因为您无法将 lexical_cast&lt;char&gt;char 结果转换为字符串。一旦我解决了这个问题,代码works 只要sourceString 包含一个字符。

标签: c++ boost lexical-cast


【解决方案1】:

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

如果您的真实代码不起作用,请发布更多;最好是演示错误的可运行程序。

【讨论】:

  • 感谢您的回答。我有一个 vector 并且我知道位置索引 x 处的字符串只会是一个字符,所以基本上我正在执行以下操作: char someChar = lexical_cast(tokens[x]);这就是引发错误的原因。不好意思,之前应该发过的。谢谢。
  • 也许你应该检查你的假设;在演员表之前添加assert(tokens[x].length() == 1);,以确保您所知道的就是正在发生的事情。
  • 是的,迈克你是对的,我的假设是不正确的。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-19
  • 2018-06-13
  • 2015-06-20
  • 1970-01-01
  • 2012-08-02
  • 2015-05-25
相关资源
最近更新 更多