在C ++中编码时无法在VS Code中使用自动关键字

时间:2019-07-15 08:07:07

标签: c++ c++11 visual-studio-code c++14

我正在使用 VS Code编码C ++ 。它的表现还不错。但是,每当我在代码中使用 auto 关键字时,程序就无法编译。

例如,要遍历字符串 我的代码而不使用自动关键字 ,其外观将是

#include <iostream>
#include <string>
using namespace std;
int main()
{
    string s("Hello");
    for(int i=0;i<s.length();i++)
    {
        cout<<s.at(i)<<' ';
    }
    cin.get();
}

它会编译查找并运行并给出正确的输出结果

  

执行任务:g ++ -g -o helloworld helloworld.cpp

     

终端将被任务重用,按任意键将其关闭。

     

输出:您好

但是只要我尝试执行相同的工作,但 使用自动关键字 ,代码就看起来像

#include <iostream>
#include <string>
using namespace std;
int main()
{
    string s("Hello");
    for(auto c:s)
    {
        cout<<c<<' ';
    }
    cin.get();
}

但是它会给出 编译时错误

Executing task: g++ -g -o helloworld helloworld.cpp 

helloworld.cpp: In function 'int main()':
helloworld.cpp:7:14: error: 'c' does not name a type
     for(auto c:s)
              ^
helloworld.cpp:11:5: error: expected ';' before 'cin'
     cin.get();
     ^
helloworld.cpp:12:1: error: expected primary-expression before '}' token
 }
 ^
helloworld.cpp:12:1: error: expected ')' before '}' token
helloworld.cpp:12:1: error: expected primary-expression before '}' token
The terminal process terminated with exit code: 1

Terminal will be reused by tasks, press any key to close it. 

请帮帮我。

1 个答案:

答案 0 :(得分:3)

这是线索:

  

执行任务:g ++ -g -o helloworld helloworld.cpp

我怀疑您需要使用-std=c++11或更高版本进行编译。

在引入auto关键字之前,较早版本的gcc / g ++将默认为C ++ 98标准。可能还有其他配置也是默认配置。解决方法很简单。

配置构建,以使正在编译的任务是这样的:

g++ -std=c++11 -g -o helloworld helloworld.cpp 

如果可用,您也可以使用-std=c++14-std=c++17