2016-06-27 5 views
-3

はcin私は運動のためにコード化された:エラー:のstd '演算子>>' の一致::

Write a complete program that reads an integer from the user,doubles it using the doubleNumber() function,and then prints the doubled value out to the console.

#include <iostream> 

int doubleNumber(int x) 
{ 
    return 2*x; 
} 

int main() 
{ 

    int a; 
    std::cout << "Enter an integer :" ; 
    std::cin >> a >> std::endl; 
    std::cout << doubleNumber(a) << endl; 
    return 0; 
} 

コンパイル中に私が手にエラーがありません:

error: no match for 'operator >>' 

アイデア?

+3

'てendlは、' 'のstd :: ENDLをする必要があります;'そして、なぜあなたは 'のstd :: endl'に' '>>使用していますか? – PaulMcKenzie

+0

ありがとうPaulMckenzie。コードは修正後に機能しました。 – NewCoderVini

答えて

2

あなたには2つの問題があります。あなたはendlのstdがありません。これはendlがstdからのものであるためスコープを識別するために必要です。

その他の問題は、cinを使用しているときに、std :: endlを追加する必要がないことです。 std :: endlは、行の終わりを表します(新しい行を作成します)。 cinコマンドは入力のみを受け取り、std :: endlは入力できる変数ではありません。

これらを修正すると、プログラムは正常に動作します。

固定コード:

#include <iostream> 

int doubleNumber(int x) 
{ 
    return 2*x; 
} 

int main() 
{ 

    int a; 
    std::cout << "Enter an integer :" ; 
    std::cin >> a; 
    std::cout << doubleNumber(a) << std::endl; 
    return 0; 
} 
+0

コードスニペットは一般にJavascript、HTMLなどでのみ使用できますが、C++では使用できません – Rakete1111

+0

C++コード用のフォーマッタはありますか?私はちょうどコードのラッパーとしてそれを使用しました。 – Realist

+0

いいえ、ちょうど普通のコードインデントを使用してください:) – Rakete1111

0

最後のendlはstd :: endlです。

cinはcinの後にendlを取り出します。cinは値を取ります。改行を追加する必要はありません.coutのためのものです。

+0

コードを訂正していただきありがとうございます。progrmaはうまくいきました。 – NewCoderVini

2

std::endlは実際にはストリームに改行を書き込んで('\n')、ストリームにstd::flushを使用してストリームをフラッシュし、バッファにあるすべてを画面に書き込みます。

は、改行をと書いています。これは改行が入力には不適切であるため、そのように使用しないでください。

また、出力の2番目の行にendlの前にstd::を指定するのを忘れてしまった。

+0

注目。 また、標準ライブラリディレクティブステートメント はnamespace stdを使用しています。 は、関数内で使用するように制限する必要があります。または、より頻繁にstd ::のように使用する必要があります。なぜ、関数外で使用するのが避けられるのですか? – NewCoderVini

関連する問題