ホームページ > バックエンド開発 > C++ > C で文字列を double に安全に変換し、数値以外の文字列を処理する方法

C で文字列を double に安全に変換し、数値以外の文字列を処理する方法

Patricia Arquette
リリース: 2024-10-26 07:28:30
オリジナル
1013 人が閲覧しました

How to Safely Convert Strings to Doubles in C   and Handle Non-Numerical Strings?

数値以外の文字列に対する特別な処理を使用して C で文字列を double に変換する

C では、文字列を double に変換することは次のようにシームレスに実行できます。組み込み関数。ただし、数値文字列と非数値文字列を区別することが重要になります。この課題に対処するために、数値以外の文字列に対して 0 を返すソリューションを紹介します。

関数の実装:

ソリューションの中核は string_to_double 関数にあります。

<code class="cpp">#include <sstream>

double string_to_double(const std::string& s) {
  std::istringstream i(s);
  double x;
  if (!(i >> x))
    return 0;
  return x;
}</code>
ログイン後にコピー

仕組み:

  1. 文字列を安全に読み取るために、入力文字列ストリーム (std::istringstream) オブジェクト i を作成します。
  2. ストリームから double を抽出しようとします。成功した場合、double は x に割り当てられます。
  3. double を抽出できない場合 (i >>x が失敗した場合)、数値以外の文字列を示す 0 を返します。

関数のテスト:

提供されたテスト ケースでは、関数がさまざまな数値文字列と数値以外の文字列を正しく解釈する方法を示します:

<code class="cpp">int main() {
  assert(0.5 == string_to_double("0.5"));
  assert(0.5 == string_to_double("0.5 "));
  assert(0.5 == string_to_double(" 0.5"));
  assert(0.5 == string_to_double("0.5a"));

  // Non-numerical strings will return 0:
  assert(0 == string_to_double("foobar"));
}</code>
ログイン後にコピー

制限事項:

非数値文字列に対して 0 を返すという特定の要件により、ゼロを表す数値文字列と真の非数値文字列を区別することができないことに注意することが重要です。

以上がC で文字列を double に安全に変換し、数値以外の文字列を処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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