gpt4 book ai didi

c++ - boost::lexical_cast ("-138.8468953457983248") 抛出异常

转载 作者:行者123 更新时间:2023-11-30 02:51:49 25 4
gpt4 key购买 nike

我正在尝试将此数字转换为整数。但是我抛出了一个 bad_cast 异常。我不确定发生了什么。

最佳答案

那是因为值(value)

-138.8468953457983248

不是整数。

您需要将其转换为浮点值。

    int a = static_cast<double>("-138.21341535");
// ^^^^^^ Cast to double
// ^^^ You can assign double to an int

词法转换将尝试使用字符串中的所有字符。如果还有剩余,那就是糟糕的 Actor 阵容。当您尝试将以上内容转换为整数时,它显示为“-138”,但在生成异常的转换缓冲区中留下了“.21341535”。

#include <boost/lexical_cast.hpp>

int main()
{
std::cout << "Try\n";
try
{
std::cout << boost::lexical_cast<int>("-138.8468953457983248") << "\n";
}
catch(boost::bad_lexical_cast const& e)
{
std::cout << "Error: " << e.what() << "\n";
}
std::cout << "Done\n";
std::cout << "Try\n";
try
{
std::cout << boost::lexical_cast<double>("-138.8468953457983248") << "\n";
}
catch(boost::bad_lexical_cast const& e)
{
std::cout << "Error: " << e.what() << "\n";
}
std::cout << "Done\n";
}

这个:

> g++ lc.cpp
> ./a.out
Try
Error: bad lexical cast: source type value could not be interpreted as target
Done
Try
-138.847
Done

关于c++ - boost::lexical_cast<int> ("-138.8468953457983248") 抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19455755/

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