C++ having cin read a return character

前端 未结 5 1160
走了就别回头了
走了就别回头了 2021-02-07 20:17

I was wondering how to use cin so that if the user does not enter in any value and just pushes ENTER that cin will recognize this as valid

相关标签:
5条回答
  • 2021-02-07 20:59

    Does cin.getline solve your problem?

    0 讨论(0)
  • 2021-02-07 21:03

    I find that for user input std::getline works very well.

    You can use it to read a line and just discard what it reads.

    The problem with doing things like this,

    // Read a number:
    std::cout << "Enter a number:";
    std::cin >> my_double;
    
    std::count << "Hit enter to continue:";
    std::cin >> throwaway_char;
    // Hmmmm, does this work?
    

    is that if the user enters other garbage e.g. "4.5 - about" it is all too easy to get out of sync and to read what the user wrote the last time before printing the prompt that he needs to see the next time.

    If you read every complete line with std::getline( std::cin, a_string ) and then parse the returned string (e.g. using an istringstream or other technique) it is much easier to keep the printed prompts in sync with reading from std::cin, even in the face of garbled input.

    0 讨论(0)
  • 2021-02-07 21:03

    Try unbuffering cin (it's buffered by default).

    0 讨论(0)
  • 2021-02-07 21:10

    You will probably want to try std::getline:

    #include <iostream>
    #include <string>
    
    std::string line;
    std::getline( std::cin, line );
    if( line.empty() ) ...
    
    0 讨论(0)
  • 2021-02-07 21:15

    To detect the user pressing the Enter Key rather than entering an integer:

    char c;
    int num;
    
    cin.get(c);               // get a single character
    if (c == 10) return 0;    // 10 = ascii linefeed (Enter Key) so exit
    else cin.putback(c);      // else put the character back
    cin >> num;               // get user input as expected
    

    Alternatively:

    char c;
    int num;
    c = cin.peek();           // read next character without extracting it
    if (c == '\n') return 0;  // linefeed (Enter Key) so exit
    cin >> num;               // get user input as expected
    
    0 讨论(0)
提交回复
热议问题