「cin」は C の最初の単語のみを読み取ります: 明確化と解決策
提供されたコード スニペットでは、cin ストリーム演算子が入力を str 文字配列に読み取るために使用されます。ただし、入力の最初の単語のみを読み取るため、文字列の取得が不完全になります。
cin がこのように動作する理由
デフォルトでは、cin は文字を順番に読み取り、文字列を区切ります。空白文字 (スペース、タブなど) に基づいて入力します。空白文字に遭遇すると、入力シーケンスが完了したと見なされ、次の入力に移動します。
解決策 1: Char 配列の cin.getline()
入力行全体を読み取る場合は、cin の代わりに cin.getline() 関数を使用できます。これには 2 つのパラメータが必要です。読み込む char 配列と、バッファ オーバーフローが発生しないようにするための配列のサイズです。
<code class="c++">char str[100]; cin.getline(str, sizeof str);</code>
解決策 2: getline() for std::string
C 11 以降を使用している場合は、std::string 型を利用して getline() 関数を使用できます。
<code class="c++">std::string str; std::getline(cin, str);</code>
最新のコンパイラの推奨事項
Turbo C 4.5 からより最新のコンパイラにアップグレードすることを強くお勧めします。 Visual Studio Express は、改善された言語サポートと機能を提供する Windows 用の無料オプションです。
以上がなぜ「cin」は C の最初の単語だけを読み取るのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。