错误:“ string_view”不是“ std”的成员

时间:2019-10-04 04:29:28

标签: c++ visual-studio-code c++17

我是C ++的新手。我在Windows10的visual-studio-code中编译了我的代码,带有2个类型为string和string_view的变量。字符串变量很好,但是string_view给出了错误。我还启用了configuration.json中的c ++ 17扩展并在vscode中编辑了configuration / 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();
                       ^~

4 个答案:

答案 0 :(得分:2)

我在您的代码中未发现任何错误。我编译了您的代码here(在此处复制您的代码,并在编译之前选择语言C ++ 17),它可以正常工作。只需检查您正在运行的编译器是否支持C ++ 17功能即可。因为std :: string_view仅从C ++ 17起可用。 要在Visual Studio check here和Visual Studio代码follow this中启用C ++ 17。

希望这会对您有所帮助。

答案 1 :(得分:2)

我正在使用Visual Studio代码的gcc编译器。在C ++ 17中,gcc进行了一些更改,包括将string_view和string集成在一起。 我认为现在似乎更加复杂了,因为在某些情况下,字符串将隐式转换为string_view。

有关更多详细信息:

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0254r2.pdf

答案 2 :(得分:0)

默认情况下,VS将项目设置为x86,但是当您打开时 属性,而是加载x64。我认为VS应该加载相同的 您当前在IDE中使用的设置,但这仅仅是一个 个人意见。

为x86设置C ++ 17标准解决了我的问题。 此解决方案对我有用 https://developercommunity.visualstudio.com/content/problem/1133349/namespace-std-has-no-member-string-view.html

答案 3 :(得分:0)

我通过转到..解决了这个错误 项目 > 属性 ... 选择所有配置... > 配置属性 > C/C++ > 语言 > C++ 语言标准 > ...选择 ISO C++ 17 标准(/std::c++17)enter image description here