错误: 'string_view'不是'std'的成员

19

我是C++的新手。我在Windows 10中的Visual Studio Code中编译了自己的代码,其中包含两个类型为string和string_view的变量。字符串变量没有问题,但是string_view则出现错误。我还在configuration.json中启用了C++17扩展,并在VSCode的配置/ UI文件中进行了编辑。

这是我的代码:

#include<iostream>
#include<string_view>
using namespace std;
int main(){
      string str="hello";
      cout<<str<<endl;
      std::string_view sv=" world";
      auto result=str+sv.data();

      return 0;
}

错误信息为:

main.cpp: In function 'int main()':
main.cpp:7:12: error: 'string_view' is not a member of 'std'
       std::string_view sv=" world";
            ^~~~~~~~~~~
main.cpp:7:12: note: 'std::string_view' is only available from C++17 onwards
main.cpp:8:23: error: 'sv' was not declared in this scope
       auto result=str+sv.data();
                       ^~

你使用的编译器是什么?Visual Studio Code是一个文本编辑器,它不是用于编译和构建的集成开发环境。 - R Sahu
我正在使用g++。 - Abhi38
4个回答

17

我在你的代码中没有发现任何错误。我在这里编译了你的代码(将你的代码复制到该网站并选择C++17语言进行编译),结果符合预期。只需检查您所使用的编译器是否支持C++17特性,因为std::string_view仅从C++17开始提供。

要在Visual Studio中启用C++17,请点击此处,要在Visual Studio Code中,请参照此链接

希望这能帮到您。


@Abhi38,我在上面的答案中给了你链接,请查看。谢谢。 - Saurav Rai
谢谢回复。但是,我正在使用 Visual Studio Code 而不是 Visual Studio 17。 - Abhi38
@Abhi38:Visual Studio Code 不是 你的编译器。你的代码如何被编译由你的编译器控制。因此,你需要专注于启用你正在编译的语言。 - Nicol Bolas
@Abhi38 希望你现在明白了。谢谢。 - Saurav Rai
@Abhi38您能将我的回答标为正确吗?这对其他人也会非常有用。谢谢。 - Saurav Rai

3
我通过以下步骤解决了这个错误: 进入项目属性,选择所有配置,然后进入“配置属性”>“C/C++”>“语言”>“C++ 语言标准”,选择“ISO C++ 17 标准(/std:c++17)”输入图像描述

2
我正在使用Visual Studio Code的gcc编译器。在C++17中,gcc进行了一些更改,包括将string_view和string集成到一起。在某些情况下,string将隐式转换为string_view,我认为这使得它现在更加复杂。
要了解更多详细信息,请参考以下链接:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0254r2.pdf

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接