40

いつstd::cin.getline()使用する必要がありますか?との違いは何std::cinですか?

4

5 に答える 5

43

分解しましょう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
于 2011-01-20T12:38:51.490 に答える
26

char* の場合、最初の単語を取得std::cin.getlineする代わりに行を取得します。std::cin

于 2011-01-20T10:34:57.943 に答える
10

ドキュメントを読みましたか (例: http://www.cplusplus.com/reference/string/getline/ )?

基本的に、std::cin(またはより一般的には any std::istream)は、フォーマットされた入力を取得するために直接使用されますint x; std::cin >> x;std::cin.getline()単純に rawchar *バッファを埋めるために使用されます。

于 2011-01-20T10:30:45.407 に答える
3

(非常に単純化された)私の答えは、std :: cin.getline()スペースを含むことはできますが、std :: cin >>できないということです。

于 2020-03-26T07:11:20.087 に答える