"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية تحويل السلاسل إلى الزوجي في C++: دليل بسيط باستخدام `std::istringstream` و`std::stod`

كيفية تحويل السلاسل إلى الزوجي في C++: دليل بسيط باستخدام `std::istringstream` و`std::stod`

تم النشر بتاريخ 2024-11-16
تصفح:641

How to Convert Strings to Doubles in C  : A Simple Guide Using `std::istringstream` and `std::stod`

تحويل السلاسل النصية إلى نسخ مزدوجة في لغة C

في لغة C، يمكن تحويل سلسلة نصية إلى سلسلة مزدوجة باستخدام الدالتين std::istringstream وstd::stod.

#include 

double string_to_double(const std::string& s) {
  std::istringstream iss(s);
  double x;
  if (!(iss >> x)) {
    return 0;  // Return 0 for non-numerical strings
  }
  return x;
}

إليك كيفية عمل هذه الوظيفة:

    قم بإنشاء كائن std::istringstream iss من سلسلة الإدخال s.
  1. استخدم عامل التشغيل >> لاستخراج ملف قيمة مزدوجة من iss.
  2. إذا نجح الاستخراج، قم بإرجاع القيمة المزدوجة.
  3. إذا فشل الاستخراج (على سبيل المثال، السلسلة ليست رقمية)، قم بإرجاع 0.
لاحظ أن هذه الوظيفة لا يمكنها التمييز بشكل كامل بين جميع تمثيلات السلسلة المسموح بها للصفر من السلاسل غير الرقمية. على سبيل المثال، تعتبر جميع السلاسل التالية صفرًا:

"0" "0." "0.0"
"0"
"0."
"0.0"
إليك بعض حالات الاختبار لتوضيح استخدام الدالة string_to_double:

#include 

إنت الرئيسي () {
  تأكيد(0.5 == string_to_double("0.5"));
  تأكيد(0.5 == string_to_double("0.5 "));
  تأكيد(0.5 == string_to_double("0.5"));
  تأكيد(0.5 == string_to_double("0.5a"));

  تأكيد(0 == string_to_double("0"));
  تأكيد(0 == string_to_double("0."));
  تأكيد(0 == string_to_double("0.0"));
  تأكيد(0 == string_to_double("foobar"));

  العودة 0؛
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3