ホームページ >バックエンド開発 >C++ >C の `std::cin` と `std::cin.getline()` の主な違いは何ですか?

C の `std::cin` と `std::cin.getline()` の主な違いは何ですか?

DDD
DDDオリジナル
2024-12-08 04:36:13219ブラウズ

What's the Key Difference Between `std::cin` and `std::cin.getline()` in C  ?

std::cin.getline() と std::cin の違いを理解する

C で入力と出力を操作する場合、 std::cin.getline() と std::cin の間のニュアンスを理解することが重要です。どちらも標準入力オブジェクト std::cin に属しますが、それぞれ異なる目的を果たし、入力の処理方法が異なります。

std::cin.getline()

詳しく見てみましょうstd::cin.getline()。 std:: 名前空間には、標準ライブラリの型、関数、およびオブジェクトの広範なコレクションが格納されます。 std::cin は、標準の文字入力を表すオブジェクトの 1 つです。標準入力から文字を抽出するためのメソッドと関数を提供します。

std::cin.getline() は、左側のオブジェクト (ここでは std) から文字の行を取得する std::cin のメソッドです。 ::シン)。改行文字 (n) に遭遇するか、指定された最大文字数に達するか、入力がなくなるまで文字の読み取りを続けます。

std::cin と std::cin.getline( )

std::cin と std::cin.getline() の主な違いは、空白と改行の処理方法にあります。文字:

  • std::cin: デフォルトでは、std::cin は先頭の空白文字 (スペース、タブなど) をスキップし、最初に見つかった空白文字で読み取りを停止します。 .
  • std::cin.getline(): 対照的に、 std::cin.getline() は、改行文字 (n) が見つかるまですべての文字を読み取り、含めます。これは、空白文字を含むテキスト行全体を効果的に読み取ることを意味します。

使用例

これらの区別を理解することは、文字列や入力を扱う場合に非常に重要になります。スペースや改行を含めてください。例:

string name;
int age;

// Read a single word from std::cin
std::cin >> name; // Suppose John

// Read the next line of input
std::string line;
std::getline(std::cin, line); // Suppose "is 25 years old"

// Extract the age from the line
age = std::stoi(line.substr(line.find("is") + 3, line.find("years") - 5)); // Extract "25"

この例では、std::cin を使用して 1 つの単語 (名前) を読み取り、次に std::cin.getline() を使用して次の行全体を読み取ります。 std::cin を使用して年齢を含む行を読み取ると、周囲のテキストなしで「25」のみが抽出されることに注意してください。

結論

空白や改行を含む入力を扱う場合、std::cin.getline() と std::cin の違いを理解することが不可欠です。それぞれの異なる動作を理解することで、開発者は入力の特定の部分を効果的に取得し、データ処理における潜在的な曖昧さを回避できます。

以上がC の `std::cin` と `std::cin.getline()` の主な違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。