2016-04-09 76 views
-2

これは私の最初のStackOverflowであり、参加するのは嬉しいです Stroustrupの" Programming and Practice using C++ "今、私たちは、ライブラリを使用しているため、彼は(の#include「std_lib_facilities.h」)エラー: "演算子<< 'に一致しません(オペランドの種類はstd :: istreamです)

私は運動を終えを作成し、このエラーを 「(オペランドの型がSTDある::はistream) 『演算子< <』の一致なし」です

私が書いたプログラムはまだ完璧ではないかもしれませんが、現時点ではコンパイルできません。他の記事で「オーバーロード演算子」について読んだことがありますが、何を意味しているのか、具体的には他のファイルで同じライブラリがロードされているにもかかわらず、なぜこのようなことは起こりませんか。

#include "../../std_lib_facilities.h" 

int main() 
{ 
    double val1 = 0; 
    double val2 = 0; 

    cin << val1 << val2 << endl; 

    if (val1>val2) 
     cout << val1 << " is larger than " << val2 <<endl; 
    else 
     cout << val1 << " is smaller than " << val2 <<endl; 

}

+0

'cin >> val1 >> val2;'あなたがしたいことをする必要があります。 –

+0

cinが入力ストリームであるため、挿入(書き込み)演算子(**演算子<< **)は定義されていません。他のコメントで言及されているように、抽出(get)演算子(**演算子)の入力にcinを使用します。 –

+0

これは私が "コンパイラはあなたの友人です"と言う理由です。 「istreamのための<<がない」とあなたに伝えます。それは本当に役に立つ情報です。あなたは本をもっと見て、それが>>すべきであることを認識します。 (私は、情報をcinから変数へ、変数からcoutへ、矢印で考えて覚えています。 –

答えて

1

あなたはstd::istreamあるとoperator<<をサポートしていませんstd::cin、とoperator>>を使用する必要があります。

std::cin >> val1 >> val2; 
+0

** std :: ostream **として意味しましたか? –

+0

@bkVnet 'std :: cin'?いいえそれは 'std :: istream'です。 – songyuanyao

+0

私はあなたが"演算子<< istreamとしてサポートしていない "と言ったときに意味します。** std :: istream ** support ** operator << **? –

1

あなたはC++での入力のために>>演算子を使用する必要があります。これは、抽出演算子と呼ばれ、キーボードやファイルなどの値を取得するために使用されます。構文は次のとおりです。

int variableName; 

cout << "Enter number"; 
cin >> variableName; 

< <オペレータは、画面またはファイルに書き込まれたデータに使用する挿入operaterです。

関連する問題