创建 string_view 元素数组会引发错误:无法找到字符串文字运算符“operator”“sv”;和

发布于 2025-01-13 00:26:19 字数 713 浏览 1 评论 0 原文

我有以下(修改后的)代码,我想在其中创建 std::string_view 对象数组。

我在编译对应于每一行的

unable to find string literal operator ‘operator""sv’ with ‘const char [8]’, ‘long unsigned int’ arguments
         "Sensor2"sv,

代码时看到此错误:

#include <iostream>
#include <array>
#include <string_view>

struct Abc
{
    static constexpr std::array<std::string_view, 6> SomeValues = {
        "Sensor1"sv,
        "Sensor2"sv,
        "Actuator1"sv,
        "Actuator2"sv,
        "Cpu1"sv,
        "Cpu2"sv
    };
    
};


int main()
{
    Abc abc;
    
    std::cout << abc.SomeValues[3];

    return 0;
}

I have the following (modified) code where I want to create an array of std::string_view objects.

I see this error when compiling corresponding to each line

unable to find string literal operator ‘operator""sv’ with ‘const char [8]’, ‘long unsigned int’ arguments
         "Sensor2"sv,

The code:

#include <iostream>
#include <array>
#include <string_view>

struct Abc
{
    static constexpr std::array<std::string_view, 6> SomeValues = {
        "Sensor1"sv,
        "Sensor2"sv,
        "Actuator1"sv,
        "Actuator2"sv,
        "Cpu1"sv,
        "Cpu2"sv
    };
    
};


int main()
{
    Abc abc;
    
    std::cout << abc.SomeValues[3];

    return 0;
}

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

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

发布评论

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

评论(1

遮了一弯 2025-01-20 00:26:19

您需要 using namespace std::literals;,这是可以的,使用命名空间 std; 不同。

另请参阅StackOverflow 上的这个问题,而且最重要的是此项目来自 C++ 核心指南

You need using namespace std::literals;, which is ok, unlike using namespace std;.

See also this question on here StackOverflow, and, most importantly, this item from the C++ Core Guidelines.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文