2016-08-22 12 views
-2

私はユーザが入力したものに応じてURLを開くC++プログラムを持っています。C++プログラムでの不明なエラー

ここでは、コードです:

#include <iostream> 
#include <string> 
using namespace std; 

int main(){ 
    int i = 1; 
    string google = "https://www.google.com/search?q="; 
    string input; 
    getline(cin, input); 
    string changeSpace(string input) 
    { 
     for (int i = 0; i < text.length(); i++) 
     { 
      if (text[i] == ' ') 
       text[i] = '+'; 
     } 
     return text; 
    } 
    input = changeSpace(input); 
    cout << input << endl; 
    string url = string(google + input); 
    system(string("start " + url).c_str()); 
    cout << url << endl; 
} 

エラーはここにある:ブラケットで

string changeSpace(string input) 
{ 

それは期待言う ";"

そして、私は、なぜocurrsを知らないが、そのエラー、それは簡単な間違いかもしれないが、私はそれを知らない。

私を助けてください。

+3

関数定義は関数に入りません。 – jaggedSpire

+1

'main'でインライン関数' changeSpace'を 'int main()'の上に移動しました – AndyG

+0

@jaggedSpire:そうですね、それらはラムダでできます(実際には関数オブジェクトです:-)) – AndyG

答えて

5

あなたの問題は、の機能を別の機能の中に定義しようとしているためです。それをしてはいけない。

C++ 11以降、最も類似するのはlambdaです。

int main() { 
    // stuff... 

    auto changeSpace = [] (string text) -> string 
    { 
     for (int i = 0; i < text.length(); i++) 
     { 
      if (text[i] == ' ') 
       text[i] = '+'; 
     } 
     return text; 
    } 

    input = changeSpace(input); 

    // stuff... 
} 

しかし、私はあなたのコードで唯一のエラーではないと確信しています。

0

関数のネストはC++では許可されていません。 C++ can we have functions inside functions?

system(string("start " + url).c_str());をコードに使用する場合は、<cstdlib>を含める必要があります。また、mainのreturn文も使用してください。return 0

+1

mainにreturn文を書く必要はありません。 'return 0'は暗黙的です。 –