14
#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++ 中是否有 for each 循环(循环范围?)?上面的 for each 循环有什么问题?

提前致谢。

4

2 回答 2

16

该代码是有效的,可以在在线编译器上演示。

请参阅您的编译器文档以确保您已启用 C++11。该选项通常称为-std=c++11. 您可能需要下载升级;检查 GCC(当前为 4.8)或 Clang(当前为 3.3)的包管理器。

于 2013-06-24T02:31:10.903 回答
4

在 C++11x 之前,for_each在标头中定义algorithm。只需使用:

for_each (vec.begin(), vec.end(), fn);

wherefn是将元素传递给的函数,前两个参数是输入迭代器。

此外,在包括两者之后stringalgorithm您可以使用

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

于 2013-06-24T02:30:56.600 回答