循环前的C ++ cin.get

时间:2011-05-03 10:20:46

标签: c++

嘿伙计们,我正在设计一个C ++程序,它读取一个由负数终止的一个或多个正实数的序列。为了测试这已经正确完成,我输出了用户输入的第5个数字。我使用while循环来填充我的数组,但我的cin.get(x)使我的程序无法编译。请帮助我修复我的代码。

如果有任何帮助,这是编译器错误:

  

solution1.cpp:在函数‘int main()’中:   
solution1.cpp:19:错误:没有匹配函数来调用‘std::basic_istream<char, std::char_traits<char> >::get(int&)’

     

的/ usr /包括/ C ++ / 4.4 / istream的:280:   
注意:候选人是:typename std::basic_istream<_CharT, _Traits>::int_type std::basic_istream<_CharT, _Traits>::get() [with _CharT = char, _Traits = std::char_traits<char>]

     

的/ usr /包括/ C ++ / 4.4 / istream的:294:   
注意:std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::get(_CharT&) [with _CharT = char, _Traits = std::char_traits<char>]

     

的/ usr /包括/ C ++ / 4.4 / istream的:321:   
注意:std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::get(_CharT*, std::streamsize, _CharT) [with _CharT = char, _Traits = std::char_traits<char>]

     

的/ usr /包括/ C ++ / 4.4 / istream的:332:   
注意:std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::get(_CharT*, std::streamsize) [with _CharT = char, _Traits = std::char_traits<char>]

     

的/ usr /包括/ C ++ / 4.4 / istream的:355:   
注意:std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::get(std::basic_streambuf<_CharT, _Traits>&, _CharT) [with _CharT = char, _Traits = std::char_traits<char>]

     

的/ usr /包括/ C ++ / 4.4 / istream的:365:   
注意:std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::get(std::basic_streambuf<_CharT, _Traits>&) [with _CharT = char, _Traits = std::char_traits<char>]

#include <iostream> 
using namespace std; 

int main() 
{
    char num[100] = {0};
    int y = 0;
    int x = 0;
    int flag = 0;

    cout << "Please enter line of numbers: ";

    while (flag > 0)
    {
        cin.get(x);

        if (x < 0)
        {
            flag = -1;
        }
        else
        {
            num[y] = x;
            y = y + 1;
        }
    }

    cout << "           " << num[4] << endl;

    return 0;
}

3 个答案:

答案 0 :(得分:3)

如果您真的想逐个字符地阅读,请将cin.get(x)更改为x = cin.get(),但是从上下文中我猜测您想要阅读整数。为此,请使用cin >> x

答案 1 :(得分:1)

如果您尝试从命令行读取整数,则语法为cin >> x;cin.get()读取单个字符,并按值返回。

答案 2 :(得分:0)

使用“x = cin.get();”而不是“cin.get(x);”

有关详细信息,请参阅下面提到的链接中的cin.get的所有变体,

http://www.cplusplus.com/reference/iostream/istream/get/