如何在c ++中使用每个循环

时间:2013-06-24 02:24:04

标签: c++

#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 ++中的每个循环都有一个(循环范围?)? 上面的每个循环有什么问题?

提前致谢。

2 个答案:

答案 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是元素将被传递到的函数,前两个参数是输入迭代器。

此外,在同时包含stringalgorithm后,您可以使用

std::transform(str.begin(), str.end(),str.begin(), ::toupper);