#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
int main() {
string str("hello world!");
for (auto &c : str)
c = toupper(c);
cout << str;
return 0;
}
此c ++代码无法编译。 错误消息: main.cpp:21:错误:在':'标记之前不允许使用函数定义 题: c ++中的每个循环都有一个(循环范围?)? 上面的每个循环有什么问题?
提前致谢。
答案 0 :(得分:16)
代码有效,可以在online compiler上证明。
请参阅编译器文档以确保已启用C ++ 11。该选项通常称为-std=c++11
。您可能必须下载升级;检查您的包裹经理是否有GCC(目前为4.8)或Clang(目前为3.3)。
答案 1 :(得分:4)
在C ++ 11x之前,for_each
标头中定义了algorithm
。
只需使用:
for_each (vec.begin(), vec.end(), fn);
其中fn
是元素将被传递到的函数,前两个参数是输入迭代器。
此外,在同时包含string
和algorithm
后,您可以使用
std::transform(str.begin(), str.end(),str.begin(), ::toupper);