我是C ++的新手,我现在正在阅读C ++入门书。
我写了一个关于字符串的小例子,这里是代码:
#include <iostream>
#include <string>
#include <cctype>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main() {
string s("Hello World");
for (auto &c : s)
c = toupper(c);
cout << s << endl;
return 0;
}
我在使用GCC版本4.4.6的Linux上,我尝试使用以下代码编译此代码:
g++ test_strings.c -std=c++0x
但出现以下错误:
test_strings.c: In function 'int main()':
test_strings.c:14: error: expected initializer before ':' token
test_strings.c:19: error: expected primary-expression before 'return'
test_strings.c:19: error: expected ')' before 'return'
我从教科书中复制了程序,所以我虽然是拼写错误,但经过检查并尝试在网上搜索并更新我的gcc错误提醒。非常感谢帮助,提前谢谢。
答案 0 :(得分:5)
根据the C++0x/C++11 Support in GCC page,你需要运行gcc 4.6才能获得range-for功能。
改进了对即将推出的C ++ 0x ISO C ++标准的实验支持,包括对constexpr的支持(感谢Gabriel Dos Reis和Jason Merrill),nullptr(感谢Magnus Fromreide),noexcept,unrestricted union, range-基于循环(感谢Rodrigo Rivas Costa),不透明的枚举声明(也感谢Rodrigo),隐式删除的函数和隐式移动构造函数。
由于您运行的是gcc 4.4.6,因此无法使用。