ホームページ > バックエンド開発 > C++ > C ストリームを使用して無効な数値入力を確実に処理するにはどうすればよいですか?

C ストリームを使用して無効な数値入力を確実に処理するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-28 15:11:14
オリジナル
1002 人が閲覧しました

How Can C   Streams Be Used to Reliably Handle Invalid Numeric Input?

C ストリームによる無効な入力の解決

問題:

提供されたコードは、数字以外の文字が入力されないようにすることを目的としています。入力として受け入れられます。ただし、入力に有効な数字の後に文字が含まれる状況は処理できません。

提案された解決策:

この問題に対処するには、別のアプローチを採用することをお勧めします。 std::getline と std::string.

コードを使用するスニペット:

#include <string>
#include <sstream>

int main() {
    std::string line;
    double d;
    while (std::getline(std::cin, line)) {
        std::stringstream ss(line);
        if (ss >> d) {
            if (ss.eof()) {   // Success
                break;
            }
        }
        std::cout << "Error!" << std::endl;
    }
    std::cout << "Finally: " << d << std::endl;
}
ログイン後にコピー

説明:

この改訂されたソリューションは次の手順に従います:

  1. 全体を読むline: std::getline を使用すると、スペースや特殊文字を含む入力行全体、
  2. 文字列を double に変換します: std::stringstream オブジェクト ss が、文字列行を保持するために作成されます。次に、ストリームを使用して、>> を使用して数値を抽出します。演算子。
  3. 変換が成功したかどうかを確認します。 ss ストリームが数値を正常に抽出し、文字列の末尾に到達した場合、有効な数値入力を示します。
  4. エラーの処理: 変換が失敗すると、エラー メッセージが表示されます。
  5. このアプローチ入力内の末尾の文字やスペースに関係なく、有効な実数のみが入力として受け入れられるようにします。

    以上がC ストリームを使用して無効な数値入力を確実に処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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