嗨,我只是为了熟悉它而测试一个基于循环的范围。这个程序应该只允许用户输入4个名称然后它将输出4个名字。我相信我正确地做了但是当我尝试编译时我遇到了编译器错误。如果我删除基于范围的部分并且我使用我已经删除的部分它可以正常工作。
我的代码有问题吗?
names.cpp:在函数'int main()'中:
names.cpp:18:错误:在':'标记
之前的预期初始值设定项names.cpp:21:错误:在'return'之前预期的primary-expression
names.cpp:21:错误:在'return'之前预期';'
names.cpp:21:错误:在'return'之前预期的primary-expression
names.cpp:21:错误:预期')'在'return'之前
#include"iostream"
#include"string"
using namespace std;
int main()
{
string names[4];
cout<<"input names\n";
for(int i=0;i<4;i++){
cin>>names[i];}
// The following 2 lines work
//for(int i=0; i<4; i++){
//cout<<names[i]<<endl;}
// the following 2 lines do not work
for(string val : names){
cout << val << endl;}
return 0;}
答案 0 :(得分:1)
虽然您没有告诉我们什么编译器和&amp;你正在使用的版本,语法错误是一个死的赠品!
您正在使用C ++ 11功能,即基于范围的for循环。
但是你的编译器是在C ++ 03模式下(或者实际上是一个C ++ 11之前的编译器)。
对于最近的GCC,请在命令行上的-std=c++11
调用中添加-std=c++14
(好,g++
)。
答案 1 :(得分:1)
当您使用6.1之前的gcc版本时,您必须添加&#34; -std = c ++ 11&#34;到您的编译器标志。