getline()
をcin
の後に使用する場合は、getline()
を呼び出す前に、まずバッファ内の改行文字をフラッシュし、cin.ignore()
を呼び出す必要があります。"cin"の後に "getline"を使用するときにcin.ignore()が必要なのはなぜですか? "cin"を複数回使用する場合は不要ですか?
std::string name, address;
std::cin >> name;
std::cin.ignore(); //flush newline character
getline(std::cin,address);
しかし、複数のcin
を使用した場合、我々は、改行文字をフラッシュする必要はありません。
std::string firstname, lastname;
std::cin >> firstname;
std::cout << firstname << std::endl;
//no need to flush newline character
std::cin >> lastname;
std::cout << lastname << std::endl;
なぜですか?なぜ、最初のケースではcin.ignore()
が必要ですが、最後のケースでは必要ではありませんか?
getline()
に変わりますので
、
getline
で読み取ることでしょう? '>> '演算子もいくつかの文字をスキップできることを意味しますか? –@UzairZia '>'で文字を読むと、いくつかの設定を変更しない限り、空白をキャッチすることはできません。 – iBug