gpt4 book ai didi

c++ - 如何使用 boost lexical_cast 将字符串转换为 unsigned short?

转载 作者:行者123 更新时间:2023-11-30 01:22:15 29 4
gpt4 key购买 nike

我有一个包含端口的字符串,当我尝试创建一个 tcp 端点时,我需要它的值为 unsigned short

  std::string to_port;
....
boost::lexical_cast<unsigned short>(to_port));

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

最佳答案

以下程序可以正常工作:

#include <iostream>
#include <boost/lexical_cast.hpp>

int main(int argc, const char *argv[])
{
std::string to_port("8004");
unsigned short intport = boost::lexical_cast<unsigned short>(to_port);

std::cout << intport << std::endl;
std::cout << std::hex << intport << std::endl;
return 0;
}

但是如果我们把main的第一行修改成:

std::string to_port;

我们得到异常:

terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::bad_lexical_cast> >'
what(): bad lexical cast: source type value could not be interpreted as target
Aborted (core dumped)

由此得出的结论是,您传递给 lexical_cast 的参数有问题。

你能在 lexical_cast 之前打印 to_port 变量来验证它的内容吗?您确定它已正确初始化并且在使用时仍在范围内(例如,不涉及临时对象,没有悬挂指针)?

关于c++ - 如何使用 boost lexical_cast 将字符串转换为 unsigned short?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16751182/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com