数组代码 - 为什么不能编译?

时间:2015-05-13 19:34:57

标签: c++

为什么这段代码没有编译。我得到的错误信息是

In function 'int main()':
10:15: error: cannot bind 'std::istream {aka std::basic_istream<char>}' lvalue to 'std::basic_istream<char>&&'
In file included from /usr/include/c++/4.9/iostream:40:0,
                 from 1:
/usr/include/c++/4.9/istream:872:5: note: initializing argument 1 of 'std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&&, _Tp&) [with _CharT = char; _Traits = std::char_traits<char>; _Tp = const char [8]]'
     operator>>(basic_istream<_CharT, _Traits>&& __is, _Tp& __x)
     ^




#include <iostream>
using namespace std;
int main()
{
    int MAXTEMPS;
    int i, temp [MAXTEMPS];
    for(i=0; i< MAXTEMPS; i++) 
    {
        cout<<"Enter a Temperature:" ;
        cin>> "Temp[1]";
    }
    cout<<endl; 

    for(i=0; i<MAXTEMPS; i++)
    cout<<"Temperature "<<i<<" is" <<temp[i]<<endl; 
    return 0; 
}

原始代码:enter image description here

2 个答案:

答案 0 :(得分:2)

您出于某种原因尝试cin为文字

cin >> "Temp[1]";

删除引号,使用正确的大小写,并使用索引变量i

cin >> temp[i];

答案 1 :(得分:0)

首先,变量:

reallyDone

未初始化,正如原始代码所示,它必须等于5。

int MAXTEMPS;

其次,您无法使用字符串文字获得输入(cin),并且您不会使用一个索引来获取所有输入(temp [1]),所以这样做:

int MAXTEMPS = 5;

您还应该考虑在输入块时使用制表符(在我看来更好地理解代码)