ホームページ > バックエンド開発 > C++ > 明示的なループを使用せずに C で EOF まで stdin を読み取るにはどうすればよいですか?

明示的なループを使用せずに C で EOF まで stdin を読み取るにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-17 04:01:03
オリジナル
896 人が閲覧しました

How Can I Read stdin Until EOF in C   Without Explicit Loops?

ループなしで EOF まで標準入力から入力をキャプチャ

ファイルの終わり (EOF) まで標準入力から入力を読み取るのが一般的ですCプログラミングにおけるタスク。通常、これを実現するためにループが使用されますが、特定の状況では、非ループのアプローチが望ましい場合があります。

ループを使用しないソリューション

残念ながら、単一のソリューションはありません。 、標準入力から EOF まで入力を読み取ることができる C の非ループ関数。ただし、入力演算子と C 文字列操作を組み合わせることで回避策が得られます。

char input[1000];
cin.getline(input, 1000);
while (cin.eof() == false) {
    cout << input << endl;
    cin.getline(input, 1000);
}
ログイン後にコピー

このアプローチでは、cin.getline() を使用して、標準入力から入力配列に最大 1000 文字を読み取ります。次に、cin.eof() を使用して EOF に達したかどうかを確認します。そうでない場合は、入力をコンソールに出力し、EOF に達するまでプロセスを繰り返します。

最適なループベースのアプローチ

非ループ ソリューションが存在しない場合実現可能かどうかにかかわらず、ループベースの最良のアプローチは std::getline() 関数を使用することです。

string line;
while (getline(cin, line)) {
    // Process the line
}
ログイン後にコピー

このアプローチでは、ファイルの終わりまで getline() を使用して入力行を読み取るループに入ります。に達します。 getline() は、入力が失敗するか EOF に遭遇すると false を返し、ループが終了します。

以上が明示的なループを使用せずに C で EOF まで stdin を読み取るにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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