تحويل السلاسل النصية: to_string وstoi
حوّل بأمان بين السلاسل النصية والأنواع الرقمية باستخدام std::to_string وstd::stoi وstd::stod
تحويل السلاسل النصية: to_string وstoi درس مجاني في C++ Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C++ Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C++ Academy 4 دروس في المجموع.
أهمية تحويل السلاسل
تحتاج باستمرار إلى التحويل بين الأرقام والنصوص — لإدخال المستخدم وملفات الإعداد وJSON وعناوين URL والسجلات.
std::to_string
يحوّل std::to_string أي نوع رقمي مضمّن إلى سلسلة نصية. ويستخدم التنسيق الافتراضي.
#include <string>
std::string a = std::to_string(42); // "42"
std::string b = std::to_string(-7); // "-7"
std::string c = std::to_string(3.14); // "3.140000"التنسيق الافتراضي للأعداد العشرية
يستخدم to_string مع double ست مراتب عشرية. وللتحكم الدقيق، استخدم std::stringstream مع std::fixed وstd::setprecision، أو استخدم std::format في C++20.
std::stoi: التحويل من سلسلة إلى int
حلّل عددًا صحيحًا باستخدام std::stoi. فهو يتخطى المسافات البيضاء البادئة ويتوقف عند أول محرف غير رقمي.
int n = std::stoi("42"); // 42
int m = std::stoi(" -7abc"); // -7 (stops at 'a')قراءة موضع النهاية
مرّر مؤشرًا لتلقي الفهرس الذي توقف عنده التحليل — وهذا مفيد لتحليل السلاسل المختلطة.
std::string s = "42px";
size_t pos;
int n = std::stoi(s, &pos);
std::cout << pos; // 2 (parsed "42", stopped at 'p')يطرح Stoi استثناءً عند الإدخال غير الصالح
إذا لم يُعثر على أي أرقام، يطرح stoi الاستثناء std::invalid_argument. وإذا تجاوز العدد النطاق، يطرح std::out_of_range.
try {
int x = std::stoi("not_a_number");
} catch (const std::invalid_argument& e) {
std::cout << "Parse failed";
}التحويل بين الأنظمة العددية
يحدد الوسيط الثالث الأساس، من 2 إلى 36. مرّر 0 لاكتشاف الأساس تلقائيًا من البادئة.
int hex = std::stoi("ff", nullptr, 16); // 255
int bin = std::stoi("1010", nullptr, 2); // 10
int auto_detect = std::stoi("0xff", nullptr, 0); // 255stol وstoll وstoul وstoull
توجد صيغ لأنواع الأعداد الصحيحة الأخرى:
std::stol— longstd::stoll— long longstd::stoul— unsigned longstd::stoull— unsigned long long
stof وstod وstold
صيغ الأعداد ذات الفاصلة العائمة لأنواع float وdouble وlong double.
double d = std::stod("3.14159");
float f = std::stof("2.71");C++17 std::from_chars: دون استثناءات
يحلل std::from_chars القيم دون طرح استثناءات. ويعيد بنيةً تحتوي على ec، وهو رمز الخطأ، وptr، وهو موضع نهاية التحليل — ويُفضّل استخدامه في الحلقات الساخنة.
#include <charconv>
std::string s = "42";
int val;
auto result = std::from_chars(s.data(), s.data() + s.size(), val);
if (result.ec == std::errc{}) {
// success
}C++17 std::to_chars: دون تخصيص
إنه عكس from_chars — إذ يكتب عددًا في مخزن مؤقت دون تخصيص ذاكرة. وهو أسرع تحويل متاح في المكتبة القياسية.
تحقق سريع
ما الاستثناء الذي يطرحه std::stoi("abc")؟
مراجعة
يحوّل std::to_string الأرقام إلى سلاسل، بينما يحلل std::stoi وأخواته السلاسل إلى أرقام. يطرح كلاهما استثناءً عند الفشل — استخدم std::from_chars للتحليل عالي الأداء دون استثناءات.
تعلم C++ مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 51
- الدروس
- 203
الأسئلة الشائعة
هل درس «تحويل السلاسل النصية: to_string وstoi» مجاني؟
نعم — نص درس «تحويل السلاسل النصية: to_string وstoi» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C++ Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C++ Academy 4 دروس في المجموع.
ماذا ستتعلم في «تحويل السلاسل النصية: to_string وstoi»؟
حوّل بأمان بين السلاسل النصية والأنواع الرقمية باستخدام std::to_string وstd::stoi وstd::stod تتمرن على C++ Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ C++ Academy؟
لا تُشترط خبرة سابقة. C++ Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «تحويل السلاسل النصية: to_string وstoi»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس C++ Academy هذا؟
نعم. كل درس في C++ Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- std::string مقابل مصفوفات المحارف بأسلوب C
- عمليات السلاسل النصية: الربط والجزء الفرعي والبحث والاستبدال
- دفق السلاسل stringstream للتحليل
- تحويل السلاسل النصية: to_string وstoi