渣渣兔 发表于 2024-6-20 21:21:21

C++中的std::string_view在VS中报错(定名空间“std“没有成员“string_view

一、报错的地方

1、报错的代码如下:
#include <iostream>
#include <string_view>

int main()
{
    std::string_view sv("123456789", 5);

    for (const auto& c : sv)
    {
      std::cout << c << " ";
    }
    std::cout << std::endl;

    std::cout << "size() = " << sv.size() << std::endl;
    std::cout << "data() =" << sv.data() << std::endl;
    std::cout << "sv.front() = " << sv.front() << std::endl;
    std::cout << "sv.back() =" << sv.back() << std::endl;
    return 0;
}
2、在以下图片中,可以看到使用std::string_view关键词声明sv变量时,报定名空间"std"没有成员"string_view"的错误:
https://img-blog.csdnimg.cn/dd7f8b8b470f46d684d68a6c440a39d5.png
二、报错的原因

std::string_view是C++17尺度发布后新增的内容,而VS2022在项目属性页中默认的是C++14尺度。
https://img-blog.csdnimg.cn/043d7131dd9646c7979163230855388d.png
三、解决的方法

1、点击VS项目界面中的“项目”选项,然后在弹出的界面中点击“项目属性”选项,如下图所示:
https://img-blog.csdnimg.cn/55a3d89e9d4d460baf70c7b2a579fd12.png
2、上一步点击完成后,在弹出的界面中,点击“配置属性 ➨ C/C++ ➨ 语言 ➨ C++语言尺度”选项,如下图所示:
https://img-blog.csdnimg.cn/5bd7f21d47c64b6c9414833600e42d24.png
3、上一步点击完成后,在弹出的小界面选择“ISOC++17尺度”或者是“ISOC++20尺度”选项都可以,如下图所示:
https://img-blog.csdnimg.cn/fdebfc1df1fd44258fc54b6522d08912.png
4、上一步选择好“ISOC++17尺度”或者是“ISOC++20尺度”选项后,就可以点击“确定”或者“应用”按钮,体系就会保存我们设置的选项。
https://img-blog.csdnimg.cn/54c27f056aa6482dbb7fa3e84e39b08f.png
四、项目能够正常运行

在经过以上第三大步的设置后,可以看到项目已经没有报错的地方,能够正常的运行,如下图所示:
https://img-blog.csdnimg.cn/10e27402087447ca8abcf671be38b582.png
https://img-blog.csdnimg.cn/62de2d27d3bc4d8190585ea2f568c09d.png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: C++中的std::string_view在VS中报错(定名空间“std“没有成员“string_view