2013-06-24 7 views
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++(ループの範囲?)の各ループには? 上記の各ループで何が問題になっていますか?C++の各ループの使用方法

ありがとうございます。

+5

C++ 11に存在します。 C++ 11を処理できるコンパイラを使用し、必要なオプションを有効にしてください。 – jogojapan

+0

http://stackoverflow.com/q/15027282/62576 –

答えて

16

を使用することができます。また

は、有効です。

コンパイラのドキュメントを参照して、C++ 11を有効にしてください。このオプションは、多くの場合、-std=c++11と呼ばれます。アップグレードをダウンロードする必要があります。パッケージマネージャーにGCC(現在は4.8)またはClang(現在3.3)を確認してください。

4

C++ 11x以前では、for_eachは、algorithmヘッダーに定義されています。 は単に使用:

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

fn要素が渡される先の関数であり、最初の2つの引数は入力イテレータである場合。 online compilerに証明することができるようstringalgorithmの両方を含めた後、あなただけのコード

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

+4

'std :: for_each'はC++ 11でも' algorithm'ヘッダにまだ定義されています。 (C++ 11で言語コアに導入された範囲ベースのforループは、ユースケースに重複があっても 'std :: for_each'アルゴリズムを置き換えませんでした。) – jogojapan

関連する問題