الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

طريقة التحويل من String الى Int

بدأه emo147 في 1 أبريل 2008 · 7 رد · 2,777 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اذا ممكن احد يساعدني في طريقة التحويل من

string الى int

او العكس

(c++ program)

#2

السلام عليكم هذا كود التحويل

#include<iostream>
#include<cstdlib>
using namespace std;
int main()
{
string str;
const char* num;
int a;
str="123";
num=str.c_str(); 
a=atoi(num) ;
cout<<3*a<<endl;
}
tvquran_6.gif

#3

وعليكم السلام

وهذا مثال للعكس

#include<iostream>
#include<string> 

using namespace std;

int main()
{
	char buf [255];
int n = 1505453;
sprintf( buf, "%d", n );
string s1 = buf;
string s2="ali";
string s3=s1+s2;
	cout<<s1<<endl;
	cout<<s3<<endl;
	return 0;
}

نسيت أن أقول أن هذا الكود من درس الأخ سلوان

تم تعديل هذه المشاركة بواسطة hunterxhunter في 2 أبريل 2008 في 00:02

#4

جرب الكلاس Stringstream المعرف في المكتبة sstream . هذا الكلاس مرن وله فوائد كبيرة . وما راح تحس إنك تبرمج بالسي++ .

شوف هذا الكود أنا كتبته

#include<iostream>
#include<string>
#include<sstream>
int main()
{
	std::string StrNum;
	int Num;
	std::cin>>Num;

	std::stringstream st;
	st<<Num;

	std::cout<<st.str();
}

تم تعديل هذه المشاركة بواسطة b.m.s في 2 أبريل 2008 في 01:08

#5

السلام عليكم ,,

عملية التحويل من نص إلى عدد, عملية لها طرق متعددة, و لكن بشكل عام يتم قراءة النص حرفاً حرفاً ثم تفسير معنى الحروف و تحويلها إلى نص,

هذه العملية ليست بالسهولة المتوقعة بالمناسبة و خصوصاً إذا أردنا دالة شاملة لكل الحالات,

نصيحة من مجرب :)

دعك من مكتبة الـ C القياسية, و تعلم فلسفة ++C من الآن و صاعداً,

هل رأيت مثال الأخ bms و بساطته,

المشكلة في دوال مكتبة الـ C هي أنها ذات كفاءة جيدة و لكنها بدائية,

انظر إلى السطر التالي من مشاركة الأخ فهد :

a=atoi(num);

هذه الدالة لو فشلت فسوف تقوم بإرجاع صفر, ماذا لو كان العدد الموجود في النص صفر أيضاً!

لم أفكر في كيفية حل هذه المشكلة, انظر بدلاً من ذلك لعملية التحويل عن طريق الـ string stream و كيف يمكننا التحقق من نجاح عملية التحويل بكل بساطة!

لتحويل نص إلى عدد :

std::string str("123");
	std::stringstream strStream(str);
	int x;

	strStream >> x;

	if( strStream.fail() )
		std::cout << "ERROR: Input a Correct Number";
	else
std::cout << "You Entered : " << x;

و لتحويل عدد إلى نص قم باستخدام طريقة الأخ bms و التي تعتبر العملية المعاكسة للعملية التي في الأعلى!

صدقني لا أدري لماذا نستخدم مكتبة الـ C و نحن نعمل بلغة ++C!

الحمد لله على العودة أخ bms :), تمنياتي لك بالنجاح في دراستك.

تم تعديل هذه المشاركة بواسطة Khaled.Alshaya في 2 أبريل 2008 في 04:42

#6

اخواني

فهد الشلوي

hunterxhunter

b.m.s

Khaled. Alshaya

مشكورين وماقصرتواوعساكم على القوه

#7
اقتباس
لم أفكر في كيفية حل هذه المشكل
بسيطة، جملة if قبل الـ atoi تفحص اذا كان صفر فتحولة وإلاً فإن الدالة ممنوع ان تعيد صفر
#8

السلام عليكم هذه دالة كتبتها تؤدي الغرض:

int  str_to_int(string str)
{
 int a=0;
 for(int i=0;i<str.length() ;i++)
    {
         if(int(str)< int('0') || int(str)>int('9'))
         return 0;
         else
         a+=(int(str)-48);
         a*=10;
    }

    return a/10;
}
tvquran_6.gif

مواضيع مشابهة