如何使用 boost 将带逗号的字符串转换为双倍

发布于 2025-01-13 01:12:21 字数 167 浏览 0 评论 0原文

可以做类似

std::string str = "127,8";
double x = boost::lexical_cast<double>(str);

我尝试过的事情,但它会引发异常,您有一种简单的方法可以使用 boost 进行此类转换吗?

it is possible to do something like that

std::string str = "127,8";
double x = boost::lexical_cast<double>(str);

I tried it but it throws an exception, do u have a simple way to do such cast using boost ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

骑趴 2025-01-20 01:12:21

您可以使用使用 , 作为小数点的自定义区域设置。代码取自 https://stackoverflow.com/a/7277333/4117728

#include <iostream>
#include <boost/lexical_cast.hpp>
class comma_numpunct : public std::numpunct<char>
{
  protected:
    virtual char do_decimal_point() const
    {
        return ',';
    }


};

int main(int argc, char *argv[]) {
    std::string str = "127,8";
    std::locale comma_locale(std::locale(), new comma_numpunct());
    std::locale::global(comma_locale);
    double x = boost::lexical_cast<double>(str);
}

You can use a custom locale that uses , for the decimal point. Code taken and modified from https://stackoverflow.com/a/7277333/4117728

#include <iostream>
#include <boost/lexical_cast.hpp>
class comma_numpunct : public std::numpunct<char>
{
  protected:
    virtual char do_decimal_point() const
    {
        return ',';
    }


};

int main(int argc, char *argv[]) {
    std::string str = "127,8";
    std::locale comma_locale(std::locale(), new comma_numpunct());
    std::locale::global(comma_locale);
    double x = boost::lexical_cast<double>(str);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文