2016-04-09 214 views
-2

這是我的第一個StackOverflow並且很高興加入 我目前正在使用Stroustrup的」Programming and Practice using C++「學習C++和現在我們使用的是圖書館,他創造(的#include「std_lib_facilities.h」)錯誤:「不匹配'operator <<'(操作數類型是std :: istream)

我完成了一個鍛鍊和得到這個錯誤 「不匹配‘運算符< <’(操作數類型的std :: istream的)」

我寫的程序可能還不完美,但我現在甚至無法編譯它。我已經在其他文章中讀過一些關於「超載運算符」的內容,但我沒有說明d是什麼意思,特別是爲什麼在我的其他文件中,即使加載了相同的庫,也不會發生這種情況。

#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是一個輸入流,因此未定義插入(寫入)運算符(**運算符<< **)。正如在其他評論中提到的,你使用cin來提取輸入(get)運算符(** operator >> **) –

+0

這就是爲什麼我說「編譯器是你的朋友」。它告訴你「沒有」istream「。」這是非常有用的信息。你仔細看看這本書,意識到它應該是>>。 (我記得他們是通過從cin到變量的信息,或者從變量到cout,用箭頭來記住它們的。 –

回答

1

你應該使用operator>>std::cin,這是一個std::istream,不支持operator<<

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

did you mean ** as std :: ostream **? –

+0

@bkVnet'std :: cin'?No它是'std :: istream'。 – songyuanyao

+0

我的意思是當你說「哪個不支持operator <<作爲std :: istream」。** std :: istream **是否支持** operator << **? –

1

你應該在C使用>>操作輸入++。這稱爲提取操作符,用於從鍵盤或其他文件(如文件)獲取值。語法是:

int variableName; 

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

< <操作是用於在屏幕上或文件寫入數據插入算子。

相關問題