اذهب إلى المحتوى
  • 0

كيفية تحويل رقم صحيح int إلى نص string في ++C؟

Mohssen A Mohssen

السؤال

لدي رقم من نوع int وأريد تحويله إلى نص "23" ،

كيف يمكنني أن أقوم بهذا الأمر في ++C؟

وهل يجب أن أستعمل stringstream للقيام بهذا الأمر أم توجد طرق أخرى؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 2

بداية من ++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;
}

ولكن  الطريقة الأولى أسهل في الكتابة وأوضح في القراءة.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1

الطريقة اليدوية هي تشكيل سلسسة نصية من العدد بتقسيمه لعوامله الرقمية، حيث نأخذ الأرقام من اليمين لليسار عن طريق باقِ القسمة على 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;
}

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

يمكنك استخدام 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
*/

 

تم التعديل في بواسطة Ali Haidar Ahmad
رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...