いつstd::cin.getline()
使用する必要がありますか?との違いは何std::cin
ですか?
5 に答える
分解しましょうstd::cin.getline()
。まず、 がありstd::
ます。これは、標準ライブラリが存在する名前空間です。何百もの型、関数、およびオブジェクトがあります。
std::cin
はそのようなオブジェクトです。で定義されている標準の文字入力オブジェクト<iostream>
です。独自のメソッドがいくつかありますが、多くの無料機能で使用することもできます。これらのメソッドと関数のほとんどは、標準入力から 1 つ以上の文字を取得する方法です。
最後に、(および他の同様のオブジェクト) の.getline()
そのようなメソッドの 1 つです。std::cin
オブジェクトの左側 (std::cin
ここ) から取得する文字数と、それらの文字を配置する場所を指定します。正確な文字数はさまざまです: .getline()
3 つの場合に停止します: 1. 行末に達した場合 2. 入力に文字が残っていない (入力std::cin
を続けることができるため、通常は発生しません) 3. 最大文字数が読み取られます。
std::cin
オブジェクトで使用できる他のメソッドと関数があります。
std::string s;
int i;
std::cin >> s; // Read a single word from std::cin
std::cin >> i; // Read a single number from std::cin
std::getline(std::cin, s); // Read an entire line (up to \n) from std::cin
std::cin.ignore(100); // Ignore the next 100 characters of std::cin
char* の場合、最初の単語を取得std::cin.getline
する代わりに行を取得します。std::cin
ドキュメントを読みましたか (例: http://www.cplusplus.com/reference/string/getline/ )?
基本的に、std::cin
(またはより一般的には any std::istream
)は、フォーマットされた入力を取得するために直接使用されますint x; std::cin >> x;
。 std::cin.getline()
単純に rawchar *
バッファを埋めるために使用されます。
(非常に単純化された)私の答えは、std :: cin.getline()
スペースを含むことはできますが、std :: cin >>
できないということです。