さて、私はcinを使用して、複数の文字列を読み取ることができないことを知っています。しかし、このプログラムでのgetlineの動作は理解できません。私はそれに問題が何かを把握することができません。私は一緒にcinとgetlineを使用することはできませんか?で、テンプレート引数でC++でのgetlineの動作はどうですか?
template <class CharT, class Traits, class Allocator>
std::basic_istream<CharT, Traits>& operator>>(
std::basic_istream<CharT, Traits>& is,
std::basic_string<CharT, Traits, Allocator>& str);
CharT = char
およびドキュメントを1としてTraits = std::char_traits<CharT>>
: operator<<,>>(std::basic_string)
#include <iostream>
#include <string>
int main()
{
std::string name;
std::cout << "What is your name? ";
std::cin>>name;
std::cout << "Hello, " << name << "!"<<std::endl;
getline (std::cin, name);
std::cout << "Hello, " << name << "!\n";
}
Input :
Jai Simha Verma
Jai Simha Verma
OUTPUT:
What is your name? Hello, Jai!
Hello, Simha Verma !
何が奇妙ですか?正確に何をしたいですか? –
@Issacはこの動作を非常にうまく説明しています。それは期待された動作ですが、あなたのコードが "getline"コールで次の行を読むことを期待しているなら、 "cin.ignore(streamsize、delim)"を使って現在の行をスキップすることができます。 http://www.cplusplus.com/reference/istream/istream/ignore/ – Rana