ホームページ > バックエンド開発 > C++ > なぜ「cin」は C の最初の単語だけを読み取るのでしょうか?

なぜ「cin」は C の最初の単語だけを読み取るのでしょうか?

Mary-Kate Olsen
リリース: 2024-10-30 16:19:03
オリジナル
816 人が閲覧しました

Why Does

「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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート