简体   繁体   English

C++ cin.get 循环前

[英]C++ cin.get before a loop

hey guys, i'm designing a C++ program that reads a sequence of one or more positive real numbers terminated by a negative number.嘿伙计们,我正在设计一个 C++ 程序,它读取一个或多个以负数结尾的正实数序列。 To test that this has been done correctly i'm outputting the 5th number entered by the user.为了测试这是否正确完成,我正在输出用户输入的第 5 个数字。 i am using a while loop to populate my array HOWEVER, my cin.get(x) is making my program not compile.我正在使用 while 循环来填充我的数组但是,我的cin.get(x)使我的程序无法编译。 please help my fix my code.请帮助我修复我的代码。

PS this is the compliers error(s) if it is any help: PS如果有任何帮助,这是编译器错误:

solution1.cpp: In function 'int main()' :解决方案1.cpp:在 function 'int main()'
solution1.cpp:19: error: no matching function for call to 'std::basic_istream<char, std::char_traits<char> >::get(int&)'解决方案1.cpp:19:错误:没有匹配的function调用'std::basic_istream<char, std::char_traits<char> >::get(int&)'

/usr/include/c++/4.4/istream:280: /usr/include/c++/4.4/istream:280:
note: candidates are: typename std::basic_istream<_CharT, _Traits>::int_type std::basic_istream<_CharT, _Traits>::get() [with _CharT = char, _Traits = std::char_traits<char>]注意:候选人是:类型名typename std::basic_istream<_CharT, _Traits>::int_type std::basic_istream<_CharT, _Traits>::get() [with _CharT = char, _Traits = std::char_traits<char>]

/usr/include/c++/4.4/istream:294: /usr/include/c++/4.4/istream:294:
note: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::get(_CharT&) [with _CharT = char, _Traits = std::char_traits<char>]注意: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::get(_CharT&) [with _CharT = char, _Traits = std::char_traits<char>]

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

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

/usr/include/c++/4.4/istream:355: /usr/include/c++/4.4/istream:355:
note: 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>]注意: 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/include/c++/4.4/istream:365: /usr/include/c++/4.4/istream:365:
note: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::get(std::basic_streambuf<_CharT, _Traits>&) [with _CharT = char, _Traits = std::char_traits<char>]注意: 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;
}

If you are really trying to read character-by-character, change cin.get(x) to x = cin.get() , but from the context I'm guessing you want to read a whole number.如果您真的想逐个字符地阅读,请将cin.get(x)更改为x = cin.get() ,但从上下文来看,我猜您想阅读一个整数。 For that, use cin >> x .为此,请使用cin >> x

If you're trying to read an integer from the command line, then the syntax is cin >> x;如果您尝试从命令行读取 integer,则语法为cin >> x; . . cin.get() reads a single character, and returns it by value. cin.get()读取单个字符,并按值返回。

Use "x= cin.get();"使用“x=cin.get();” instead of "cin.get(x);"而不是“cin.get(x);”

For more information see all variations of cin.get at below mentioned link,有关更多信息,请参阅下面提到的链接中 cin.get 的所有变体,

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM