当前位置: 首页 > 知识库问答 >
问题:

d::from_chars在MSVC下不编译

何星鹏
2023-03-14

我有一个小函数,它使用std::from_charsstd::string_视图创建一个日期对象,而在ubuntu下使用clang或gcc进行编译,而在windows下不使用msvc。

date::year_month_day parseDate(const std::string_view& s)
{
    int y { 0 }, m { 0 }, d { 0 };

    std::from_chars(s.begin(), s.begin() + 4, y);
    std::from_chars(s.begin() + 5, s.begin() + 7, m);
    std::from_chars(s.begin() + 8, s.begin() + 10, d);

    return date::year { y } / m / d;
}

对于每个std::from_chars调用在编译时显示以下错误:

'std::from_chars':14个重载都不能转换所有参数类型

然后,编译器继续列出可能的重载,我清楚地看到了我试图使用的重载:

'std::from_chars_resultstd::from_chars(const char*const, const char*const, int

最后一个参数有一个默认值。有人能解释一下我做错了什么吗?

共有2个答案

东郭元魁
2023-03-14

正如一些程序员和鲁克所说,std::string_view。begin()不返回const char*conststd::string_视图。data()是我一直在寻找的方法。

慕乐语
2023-03-14

另一个答案是正确的——from_charsstring_视图不兼容。

但是,对于将来发现相同问题的其他人,有一个建议是将相关重载添加from_chars

这方面的进展可以在这里追踪。

 类似资料:
  • 从原子函数指针调用函数时,如: gcc一点也不抱怨,而clang和msvc在调用时有问题: [clang]:错误:调用类型为'std::atomic的对象 Clang还指定可能的呼叫候选者为: 波动性的这种差异似乎让clang和msvc感到困惑,但海湾合作委员会却没有。 当调用从更改为

  • 问题内容: 我正在学习Go,并且一直沉迷于Go旅游(exercise- stringer.go:https : //tour.golang.org/methods/7)。 这是一些代码: 所以我想出了is 的内部表示,所以散布算子起作用了。但我得到: 有没有搞错?字符串切片也不起作用,这是怎么回事? 编辑 :对不起,我的问题中有一个错误- 错误是关于type的,不是。我在玩代码,并且粘贴了错误的输

  • 本文向大家介绍\ d与\ D在JavaScript中?,包括了\ d与\ D在JavaScript中?的使用技巧和注意事项,需要的朋友参考一下 \ d与\ D \ d和\ D之间有很多区别,其中前者导致数字,而后者导致非数字,例如e,^等。它们与全局对象“ g ”一起使用,因此所有文本中的数字和非数字将显示在输出中。让我们详细讨论它。 语法1 语法2 示例1 在以下示例中,将' \ d '与全局对

  • 我想做的是:使用msvc 2010或更高版本编译qt-everywhere_opensource-4.7.3、qwt、qtwtplot3d和qwt极。 我所做的: > 安装Visual Studio C Express 2010 下载代码源文件“qt-无处不在-开源-src-4.7.3” 在"C:\Qt\静态"a中提取zip的内容。小心更改目录的名称。它们必须很短,没有空格。 创建环境变量a.QM

  • Qt(Qt4)开源Windows安装程序,包含MSVC 2008二进制代码。 开源版的 Qt4,从4.4开始就全面支持用Visual Studio编译了。所以你自己创建一个和商业版类似的安装器是可能的,就是有点复杂。这个开源项目替你解决了这个问题。 这个项目是一个可以方便的与MSVS 2008集成的Qt库,包含一个安装程序: Uninstall entry Command prompt with

  • 背景 字符编码主要是将字母、数字和其他符号映射成另一种标准形式。通常通过在发送者和接受者之间创造一条消息传递完成。使用简单的术语来说,就是将字节转换为属于不同语言的字符—例如英语,汉语,希腊语或其它任何已知语言。一个常用的早期编码模式是ASCII(美国信息交换标准编码),它使用7位编码字符。现今最常用的编码模式是Unicode UTF8和UTF-16计算机工业标准。 字符编码有另外的用途,更确切的