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

دعم C++ للغة العربية

بدأه light stars في 9 مايو 2011 · 25 رد · 2,739 مشاهدة · في لغة C و ++C
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

إخواني المبرمجين

عندي سؤال مهم وهو عن طريقة دعم C++ للغة العربية

توضيح أكثر أقوم بأدخال نص عربي ومن ثم أقوم ببعض العمليات عليه من مقارنة أو غيرها بلغة C++

و ياليت الشرح يكون خطوة خطوة ويكون بظام لينكس خاصة و إن كان ويندز فلا بئس

لتعم الفائدة

تم تعديل هذه المشاركة بواسطة light stars في 9 مايو 2011 في 15:17

#2

wchat_t

#3

شكرا على الرابط لكن لاتوجد معلومة فيه عن دعم اللغة العربية

فياليت لو تعلمنا الخطوات أو رابط أفضل من هذا

ﻷني بصراحة ما فهمت من الرابط الطريقة

تم تعديل هذه المشاركة بواسطة light stars في 10 مايو 2011 في 18:10

#4

هل تقصد الدعم فى البيئة النصية

ام الرسومية ؟ :excl:

GoodBye

#5

سيطبع لك حرف "ض"

#include <stdio.h>
#include <wchar.h>
#include <locale.h>
int main()
{
	setlocale(LC_CTYPE,"ar_SA.utf8");
	wchar_t stuff = L'ض';
	wprintf(L"%lc\n",stuff);
	return 0;
}

بالنسبة للوندوز، ربما يعمل مباشرة او ربما يعمل بتغييرات طفيفة تتعلق بinclude او قيمة LC_CTYPE

لكنه سيعمل على اللينوكس مباشرة

1

ملاحظة: يوجد

أعضاء في قائمة تجاهلي. لذا عدم ردي عليهم لا يدل على موافقتي الضمية لمحتويات مشاركاتهم.

sigsubway.png

#6

شكرا أخوي MohamedIBrahim لكن ما الفرق بين النصية وارسومية

أريد أدخل نص عربي و أقوم بمعالجتة ثم طباعتة

أخوي password123 جربت الكود لكن مشكلته يطبع أستفهام ؟ بدل حرف "ض"

فهل معناها أني أغير إعدادات التيرمنال عشان يطبع عربي

أو أنه ناقصة مكتبة

أو أغير ترميز text editor علما أنة يكتب عربي

أم ماذا أفعل أرشدوني

وجزاكم الله خيرا

#7

هل انت على وندوز؟

انا كودي يعمل على لينكس

وكما قلت سابقا الاحتمالات تكون في include اشياء اخرى لان وندوز ومايكروسوفت يحبون البدعة

ممكن تجوجلها بنفسك فيما يخص الوندوز

انا اعلنت التبرؤ التام من الوندوز

لذا سيساعدك فيها mohammed ibrahim :ph34r: باذن الله

ملاحظة: يوجد

أعضاء في قائمة تجاهلي. لذا عدم ردي عليهم لا يدل على موافقتي الضمية لمحتويات مشاركاتهم.

sigsubway.png

#8
light stars كتب:

شكرا أخوي MohamedIBrahim لكن ما الفرق بين النصية وارسومية

سأعطيك مثال بسيط أنت فى بيئة الويندوز تتعامل مع سطح المكتب ومهام عديدة وتستخدم قوائم وازرار فهذا يعنى انك فى بيئة رسومية

اما مثلا نظام الدوس فأنت تتعامل مع بيئة نصية >> وان كان هناك بعض البيئات الرسومية للدوس

GoodBye

#9

أخ light stars لغة السي++ لا علاقة لها بالمطبوعات نصيه كانت أو رسوميه. لذا اذا اردت كتابة نص بالعربي داخل متغير من نوع char او من نوع wchar_t فالامر فى النهايه يعتمد على صفحة المحارف التى ستاخذ ارقام الحروف و تظهر لك الهيئه الرسوميه لها، يعنى بإختصار قم بضبط الشاشه التي سيتم طباعة عليها المخرجات لتظهر العربيه حينها ستظهر لك النتائج بالعربيه.

داخل ويندوز قم بإستخدام الداله SetConsoleOutputCP لتحديد صفحة المحارف التى سيتم إستخدامها من قبل الشاشه لطباعة الكلمات من البرنامج للشاشه و قم باستخدام الداله SetConsoleCP لتحديد صفحة المحارف المستخدمه لادخال القيم لبرنامجك من خلال الشاشه.

الكلام السابق ينطبق على شاشة الكونسول.

و الله ولي التوفيق

3

مدونتي: C++ Tips and Tricks

#10

أنا نظامي لينكس ubuntu 11

و أتعامل من البيئة النصية

يعني المشكلة تكون في نفس التيرمنال

/public/style_extra/post_icons/icon8.gif

وفي الصورة قمت بطباعة حرفين عربي وواحد أنجليزي فتلاحظ أن السطر اﻷول والثالث أصبح ؟ ﻷنهما عربية و السطر الثاني طبع m يشكل صحيح

الترمنال عندي

UTF-8)

unicode

وإذا كان wchar_t stuff = L'ض'; زي ما عرضته أخي password123

للحرف الواحد العربي

فما هو prototype للكلمة " *string " " char "

يا جماعة حببوني في اللينكس مازلت مبتدأ فيه

post-244405-093920800 1305201181_thumb.p

المرفقات
Screenshot.png

تم تعديل هذه المشاركة بواسطة light stars في 12 مايو 2011 في 15:03

#11

تأكد من ان:

* الterminal يدعم utf8

* الخط المستخدم يحتوي على الحروف العربية

* الكود هو 100% الذي انا اعطيتك

لاحظ صورتي المرفقة (لا يوجد خطأ في الكود)

post-243663-094091700 1305208840_thumb.p

المرفقات
evidence.png

ملاحظة: يوجد

أعضاء في قائمة تجاهلي. لذا عدم ردي عليهم لا يدل على موافقتي الضمية لمحتويات مشاركاتهم.

sigsubway.png

#12

استخدم Arabic Terminal ستجدها ان بحثت فى جوجل

.Everyone has a dream

.I never thought that I would be the one I am on now

...No Pain No Gain

مشرف قسم السى/سى++ و الاسيمبلى سنة 2015 بأذن الله ...

تعديل: مشرف قسم السى/سى++ من 2012.

#13

مشكووووووور password123

الكود صحيح وطبقة ولا توجد فيه أخطاء

لكن يبدوا أن المشكلة في

* الterminal يدعم utf8

* الخط المستخدم يحتوي على الحروف العربية

وشكرا XMasterrrr

وجاري البحث عن Arabic Terminal في قوقل

#14

هناك تجربة صغيرة ممكن تعملها للتاكد

جرب تحول الكيبورد عربي (مثلما تحوله عربي لتكتب هنا في المنتدى)

وثم اكتب داخل الترمينال.... هل تظهر الحروف عربية؟

صحيح انها ستظهر معكوسة (من اليسار لليمين لكن المهم ان الحروف تظهر)

اذا ظهرت الحروف يعني التيرمينال سليم.

ملاحظة: يوجد

أعضاء في قائمة تجاهلي. لذا عدم ردي عليهم لا يدل على موافقتي الضمية لمحتويات مشاركاتهم.

sigsubway.png

#15

فعلت التجربة بالكتابة داخل التيرمنال كما قلت password123

فظهرت حروف عربية مقلوبة

أجل المشكلة ليست في التيرمنال؟؟؟؟؟

تم تعديل هذه المشاركة بواسطة light stars في 14 مايو 2011 في 17:20

#16

بالضبط... ليست بالتيرمينال.. وهذا جيد اننا عرفنا هذا.

ممكن تضع كوبي بيست بكل ضمير واخلاص هنا؟

يعني لا تقوم بتغيير اشياء حتى يظهر اكثر احترافية... بالضبط اكتب cat codefile وضع المحتوى هنا

وحتى لا تصاب بالملل.. جرب هذا الكود البديل... لاحظ انني بدلا من ar_SA.utf8 استبدلته ب"" فارغ.. وهذا له معنى ممكن تقرؤه في man locale

لكن جرب وقلي.... وكذلك لا تنسى تعطيني محتوى الملف الكود تبعك بالكامل

#include <stdio.h>
#include <wchar.h>
#include <locale.h>
int main()
{
        setlocale(LC_CTYPE,"");
        wchar_t stuff = L'ض';
        wprintf(L"%lc\n",stuff);
        return 0;
}
1

ملاحظة: يوجد

أعضاء في قائمة تجاهلي. لذا عدم ردي عليهم لا يدل على موافقتي الضمية لمحتويات مشاركاتهم.

sigsubway.png

#17

جزالك الله خيرا

والله إنك فكيت أزمة كبيرة password123

فوضعت كوبي بيست بكل ضمير واخلاص هنا :P

وطبق تمام

post-244405-025665600 1305459712_thumb.p

فياليت لو تشرح الكود ؟؟

ولو أردت أخذ كلمة كاملة بدل حرف واحد "string" كيف ؟؟

ﻷن فكرت برنامجي أخذ كلمة عربية وأفصل حروفها في مصفوفة ثم أقوم ببعض العمليات عليها كالمقارنه بين الكلمات "قياس تشابة الكلمات"

وهذا سهل بالنسبة للكلمات الإنجليزية لكن بالعربي لا زلت أجهلها

المرفقات
Screenshot-2.png
#18

جرب

wchat_t* my_str = "مرحبا";

ملحوظه .. تظهر الحروف مقلوبه .(عندي)

#19

arabic2.cpp:11:20: error: cannot convert ‘const char*’ to ‘wchar_t*’ in initialization

post-244405-021233500 1305467528_thumb.p

المشكلة في :wacko:

wchar_t *my_str = "مرحبا";

المرفقات
Screenshot.png
#20

light stars

س: فياليت لو تشرح الكود ؟؟

ج: لو تكتب man setlocale ستجد الشرح لكل شيء..

بما يخص ""، كل الذي يحدث انه ياخذ القيمة من environment variables

س: ولو أردت أخذ كلمة كاملة بدل حرف واحد "string" كيف ؟؟

ج: الstring ماهو الا array of characters

ملاحظة: يوجد

أعضاء في قائمة تجاهلي. لذا عدم ردي عليهم لا يدل على موافقتي الضمية لمحتويات مشاركاتهم.

sigsubway.png

#21

بالنسبة ل:

wprintf(L"%lc\n", my_str);

استبدله ب:

wprintf(L"%ls\n", my_str);

وبعدها سيطبع الحروف سليمة (لكن طبعا من اليسار لليمين كما قال هويدي)

ملاحظة: يوجد

أعضاء في قائمة تجاهلي. لذا عدم ردي عليهم لا يدل على موافقتي الضمية لمحتويات مشاركاتهم.

sigsubway.png

#22

مشكورين على المعلومات السابقة

طيب يا شباب إذا أرت أن أقارن بي نصين عربيين

كيف تكوون طبعا المقارنة تكون بين الحروف

يعني نقارن الحرف اﻷو للكلمة اﻷولى بالحرف اﻷول للكلمة الثانية

مثال :

كلمة1: حديقة

كلمة1: حقبة

يقارن الحرف اﻷول بالحرف اﻷول و الحرف الثاني بالثاني وهكذا

ويرجع لنا الحروف المتشابهة =4

#23

كل مافي الامر تضع loop يمر على الاشياء التي تريد مقارنتها، واذا حصل الشيء الذي تريد تقوم بزيادة عداد counter++

انصحك تحاول تكتب كود بنفسك وثم نحن نساعدك

ملاحظة: يوجد

أعضاء في قائمة تجاهلي. لذا عدم ردي عليهم لا يدل على موافقتي الضمية لمحتويات مشاركاتهم.

sigsubway.png

#24

كتبت هذا الكود وطبقتع على كلمات أنجليزية و أخرج نتائج صحيحة

لكن عند تطبيقة على كلمات عربية يخرج نتائج خاطئة

و لعل المشكلة تكون في أن الحرف العربي يعتبر حرفين أو أنة يزيد حرف أو مشكلة أخرى لا أعلم عنها

فنريد تصحيح الكود بورك فيك

	for(size_t i = 0; i < x.length(); i++)
	{
		check=0;
        	for(size_t n = 0; n < y.length(); n++)
	        {
			if(x==y[n])//if (x.compare(i,2,y,n,2) == 0)
				check++;
		}
		if(check > 0)
		{
			matching++;//matching
			cout<<x;				
		}
	}
#25

ضع الكود بالكامل

الكود لا يعرض كيف عرفت الarray و مصدر الكلمات

ملاحظة: يوجد

أعضاء في قائمة تجاهلي. لذا عدم ردي عليهم لا يدل على موافقتي الضمية لمحتويات مشاركاتهم.

sigsubway.png

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