Mohssen A Mohssen نشر 20 نوفمبر 2021 أرسل تقرير نشر 20 نوفمبر 2021 لدي رقم من نوع int وأريد تحويله إلى نص "23" ، كيف يمكنني أن أقوم بهذا الأمر في ++C؟ وهل يجب أن أستعمل stringstream للقيام بهذا الأمر أم توجد طرق أخرى؟ 2 اقتباس
2 سامح أشرف نشر 20 نوفمبر 2021 أرسل تقرير نشر 20 نوفمبر 2021 بداية من ++C11 يمكنك أن تستخدم الدالة to_string لتحويل الأرقام بشكل عام إلى نصوص، كالتالي: #include <string> int main() { int x = 23; std::string s = std::to_string(x); return 0; } الكود السابق مشابهة لـ atoi و itoa في لغة C ولكن من خلال std:to_string يمكنك أيضًا أن تستعمل stringstream بدون مشكلة: int main() { int x = 10; std::stringstream ss; ss << x; std::string str = ss.str(); return 0; } ولكن الطريقة الأولى أسهل في الكتابة وأوضح في القراءة. 2 اقتباس
1 Wael Aljamal نشر 20 نوفمبر 2021 أرسل تقرير نشر 20 نوفمبر 2021 الطريقة اليدوية هي تشكيل سلسسة نصية من العدد بتقسيمه لعوامله الرقمية، حيث نأخذ الأرقام من اليمين لليسار عن طريق باقِ القسمة على 10 ونكرر العملية بدمج المحارف التي سنكونها من هذه الأرقام، ثم نعكس السلسلة النصية الناتجة // دالة تعيد سلسلة نصية // تستقبل عدد رقم صحيح string number_to_string(int x) { if (!x) // x = 0 return "0"; string s = ""; // تهيئة السلسة الحاوية على الإجابة while(x) { // نأخذ آحاد الرقم من خلال باقي القسمة على 10 // نضيف للرقم المحرف الصفري مايكافئ عملية التحويل إلى محرف نصي s.push_back(x%10 + '0'); x /= 10; } // نعكس السلسة // العملية السابقة تضيف الأرقام في منزلة العشرات و المئات على يمين الأعدادا السابقة reverse(s.begin(), s.end()); return s; } كما يمكن استعمال sprintf حيث في المثال نكتب القيمة X في السلسلة النصية y #include <stdio.h> int main() { int x=23; char y[2]; //the output buffer sprintf(y,"%d",x); printf("%s",y) } ويمكن استخدام boost/lexical_cast وهو يوفر آلية تحويل الأنماط #include <iostream> #include <string> #include <boost/lexical_cast.hpp> int main() { int i = 10; // نمط الإعادة هو سلسلة نصية std::string s = boost::lexical_cast<std::string>(i); std::cout << s << std::endl; return 0; } 2 اقتباس
0 Ali Haidar Ahmad نشر 20 نوفمبر 2021 أرسل تقرير نشر 20 نوفمبر 2021 (معدل) يمكنك استخدام string streams. حيث أنه في هذه الطريقة، يعلن ال string stream عن كائن (stream object) يقوم أولاً بإدخال رقم ك stream في كائن، ثم يستخدم الدالة ()str لتحويله إلى سلسلة. #include<iostream> #include <sstream> // string streams من أجل #include <string> // string من أجل using namespace std; int main() { int x = 2513183; // output string stream إنشاء كائن ostringstream str1; // (stream) إرسال رقم كتدفق في سلسلة الإخراج str1 << x; // the str() converts number into string string s = str1.str(); // عرض النتيجة cout << "The newly formed string from number is : "; cout << s << endl; return 0; } // الخرج: /* The newly formed string from number is : 2513183 */ وللتحويل المعاكس (من سلسلة إلى رقم) يمكنك استخدم stringstream، وهي طريقة سهلة لتحويل سلاسل نصية من الأرقام إلى ints أو floats أو double. مثال: #include <iostream> #include <sstream> using namespace std; int main() { string s = "12345"; // stringstream كائن من الصنف stringstream obj(s); // الكائن له القيمة 12345 وسنقوم بدفقه إلى عدد الصحيح int x = 0; obj >> x; //يحمل القيمة المطلوبة x الآن المتغير cout << "Value of x : " << x; return 0; } /* Value of x : 12345 */ تم التعديل في 20 نوفمبر 2021 بواسطة Ali Haidar Ahmad 1 اقتباس
السؤال
Mohssen A Mohssen
لدي رقم من نوع int وأريد تحويله إلى نص "23" ،
كيف يمكنني أن أقوم بهذا الأمر في ++C؟
وهل يجب أن أستعمل stringstream للقيام بهذا الأمر أم توجد طرق أخرى؟
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.