C++ نوع بيانات شار مع أمثلة

⚡ ملخص ذكي

نوع بيانات الأحرف في C++ يخزن هذا النوع من البيانات حرفًا واحدًا، مثل حرف أو رقم، باستخدام قيمته في نظام ASCII. ستتعلم هنا كيفية تعريف الأحرف، وطباعة قيم ASCII، وإدخال الأحرف، وتحويل الحرف إلى سلسلة نصية.

  • 🔤 ما هو : يخزن المتغير char حرفًا واحدًا باستخدام قيمته في نظام ASCII.
  • 🔢 أسكي: كل حرف يقابل رمزًا رقميًا ASCII، مثل 'A' الذي يقابله 65.
  • 🔧 إعلان: قم بتعريف حرف باستخدام علامات اقتباس مفردة، مثل char grade = 'A';.
  • 🔁 التحويل: قم بتحويل الحرف إلى عدد صحيح للحصول على قيمته ASCII، ثم قم بتحويله مرة أخرى.
  • 🤖 مساعدة الذكاء الاصطناعي: أدوات الذكاء الاصطناعي مثل GitHub Copilot تتعامل مع الأحرف ورموز ASCII على الفور.

C++ نوع بيانات شار

ما هو شار؟

شار هو C++ نوع بيانات مصمم لتخزين الحروف. Char هو اختصار لحرف أبجدي رقمي. وهو نوع بيانات متكامل، مما يعني أن القيمة مخزنة كعدد صحيح. يشغل الحرف char حجم ذاكرة يبلغ بايتًا واحدًا. كما أنه يخزن حرفًا واحدًا.

ما هو أسكي؟

تُفسَّر قيمة الحرف كحرف ASCII. وهذا مشابه لكيفية تفسير القيم المنطقية على أنها صحيحة أو خاطئة. ASCII هو اختصار لـ American Standard (المعيار الأمريكي). Code لتبادل المعلومات. يحدد طريقة محددة لتمثيل الأحرف الإنجليزية كأرقام.

تتراوح الأرقام بين 0 و127. على سبيل المثال، الحرف "a" يعادل رمز ASCII 97.

إعلان شار

ليعلن أ متغير شار في C++، نستخدم الكلمة الأساسية char. ويجب أن يتبع ذلك اسم المتغير. يمكن تهيئة المتغير في وقت الإعلان. يجب أن تكون قيمة المتغير محاطة بعلامات اقتباس مفردة.

بناء الجملة

فيما يلي بناء الجملة لإعلان char في C++:

char variable-name;

اسم المتغير هو الاسم الذي سيتم تعيينه للمتغير.

إذا كان سيتم تعيين قيمة في وقت الإعلان، فيمكنك استخدام بناء الجملة التالي:

char variable-name = 'value';	
  • اسم المتغير هو اسم متغير char.
  • القيمة هي القيمة التي سيتم تخصيصها لمتغير char.

مثال 1:

#include <iostream>
using namespace std;
int main() {
	char grade = 'B';
	cout << "I scored a: "<<grade;
	return 0;
}

الإخراج:

إعلان شار

فيما يلي لقطة شاشة للكود:

إعلان شار

Code التفسير:

  1. تضمين ملف رأس iostream في الكود الخاص بنا لاستخدام وظائفه.
  2. تضمين مساحة الاسم std في الكود الخاص بنا لاستخدام فئاتها دون الاتصال بها.
  3. استدعاء الدالة الرئيسية (). يجب إضافة منطق البرنامج داخل نص هذه الوظيفة.
  4. قم بتعريف متغير حرف يسمى الصف. تم أيضًا تعيين قيمة B للمتغير. لاحظ أن قيمة المتغير محاطة بعلامات اقتباس مفردة.
  5. اطبع قيمة الدرجة المتغيرة بجانب النص الآخر على وحدة التحكم.
  6. يجب أن يقوم البرنامج بإرجاع القيمة عند اكتماله بنجاح.
  7. نهاية نص الدالة main().

طباعة قيمة ASCII

كما هو مذكور أعلاه، يتم تفسير كل حرف على أنه حرف ASCII. من الممكن أن تحصل على قيمة ASCII لأي حرف. يمكنك ببساطة تمرير الحرف إلى الدالة int(). وتسمى هذه العملية صب النوع. دعونا نوضح هذا:

مثال 2:

#include <iostream>
using namespace std;
int main() {
	char ch;
	cout << "Enter any character: ";
	cin >> ch;
	cout << "The ASCII Value of " << ch << " is " << int(ch);
	return 0;
}

الإخراج:

طباعة قيمة ASCII

فيما يلي لقطة شاشة للكود:

طباعة قيمة ASCII

Code التفسير:

  1. تضمين ملف رأس iostream في الكود الخاص بنا من أجل استخدام وظائفه.
  2. تضمين مساحة الاسم std في الكود الخاص بنا من أجل استخدام فئاتها دون استدعائها.
  3. استدعاء الدالة الرئيسية (). يجب إضافة منطق البرنامج داخل نص هذه الوظيفة.
  4. قم بتعريف متغير char المسمى ch.
  5. طباعة بعض النص على وحدة التحكم. يطلب النص من المستخدم إدخال قيمة للمتغير ch.
  6. قراءة مدخلات المستخدم من لوحة المفاتيح وتخزينها في المتغير ch.
  7. طباعة بعض النص على وحدة التحكم. سيتضمن النص الحرف الذي أدخلته للمتغير ch، وقيمة ASCII لهذا الحرف، ونصًا آخر.
  8. يجب أن يقوم البرنامج بإرجاع القيمة عند اكتماله بنجاح.
  9. نهاية نص الدالة main().

طباعة قيمة شار

نظرًا لقيمة ASCII، فإن C++ يمكن للمترجم إرجاع الحرف المقابل. تعلن عن متغير char وتعيين له قيمة عددية. سيتم تحويله إلى قيمة الحرف المقابل.

مثال 3:

#include <iostream>
using namespace std;
int main() {
	char x = 64, y = 66, z = 71;
	cout << x;
	cout << y;
	cout << z;
	return 0;
}

الإخراج:

طباعة قيمة شار

فيما يلي لقطة شاشة للكود:

طباعة قيمة شار

Code التفسير:

  1. بما في ذلك ملف رأس iostream في التعليمات البرمجية. سنستخدم بعد ذلك وظائفه دون الحصول على أخطاء.
  2. قم بتضمين مساحة الاسم std في الكود. سوف نستخدم فئاتها دون أن نسميها.
  3. استدعاء الدالة الرئيسية (). يجب أن يدخل منطق البرنامج في نص هذه الوظيفة.
  4. قم بتعريف ثلاثة متغيرات char x و y و z. تم تعيين قيم أعداد صحيحة للثلاثة وهي 65 و66 و67. وسيتم التعامل معها كقيم ASCII للأحرف.
  5. اطبع قيمة المتغير x على وحدة التحكم. نظرًا لأنه تم الإعلان عن x كحرف، فسيتم إرجاع الحرف بقيمة ASCII البالغة 65، أي A.
  6. اطبع قيمة المتغير y على وحدة التحكم. نظرًا لأنه تم الإعلان عن y باعتباره char، فسيتم إرجاع char بقيمة ASCII البالغة 66، أي B.
  7. اطبع قيمة المتغير z على وحدة التحكم. نظرًا لأنه تم الإعلان عن z كحرف، فسيتم إرجاع الحرف بقيمة ASCII البالغة 67، أي C.
  8. يجب أن يقوم البرنامج بإرجاع القيمة عند اكتماله بنجاح.
  9. نهاية نص الدالة main().

إدخال الأحرف

يمكننا استخدام الدالة std::cin لقراءة حرف أدخله المستخدم عبر لوحة المفاتيح. تسمح لك الدالة std::cin بإدخال عدة أحرف، ولكن المتغير character لا يمكنه استيعاب سوى حرف واحد. هذا يعني أن الحرف الأول المُدخل فقط هو الذي سيتم قراءته.tracيتم إدخال البيانات وتخزينها في متغير حرفي. أما الباقي فيبقى في المخزن المؤقت الذي يستخدمه std::cin. على سبيل المثالtract it, قم بإجراء استدعاءات لاحقة إلى std::cin.

مثال 4:

#include <iostream>
using namespace std;
int main() {
	cout << "Type a sequence of characters: "; 
	char ch;
	cin >> ch; 
	cout <<"The ASCII code of "<< ch << " is "<< int(ch) << '\n';
	cin >> ch; 
	cout <<"The ASCII code of " << ch << " is "<< int(ch) << '\n';
	return 0;
}

الإخراج:

إدخال الأحرف

فيما يلي لقطة شاشة للكود:

إدخال الأحرف

Code التفسير:

  1. تضمين ملف رأس iostream في الكود الخاص بنا لاستخدام وظائفه.
  2. قم بتضمين مساحة الاسم std في الكود الخاص بنا لاستخدام فئاتها دون استدعائها.
  3. استدعاء الدالة الرئيسية (). يجب إضافة منطق البرنامج داخل نص هذه الوظيفة.
  4. طباعة بعض النص على وحدة التحكم.
  5. قم بتعريف متغير حرف يسمى ch.
  6. قراءة مدخلات المستخدم من لوحة المفاتيح. سيتم تخزين المدخلات في المتغير ch. نظرًا لأن المستخدم سيكتب تسلسل أحرف مثل abc، فسيتم تخزين الحرف الأول فقط، a، في المتغير ch.
  7. طباعة الحرف الأول الذي تم إدخاله ورمز ASCII الخاص به والنص الآخر على وحدة التحكم. يتم تحديد رمز ASCII عن طريق تمرير متغير الحرف إلى الدالة int().
  8. اقرأ الحرف التالي الذي أدخله المستخدم. لن يُطلب من المستخدم إدخال شخصية جديدة. سيتم بدلاً من ذلك قراءة الحرف الثاني الذي تم إدخاله، وهو b.
  9. طباعة الحرف الثاني الذي تم إدخاله ورمز ASCII الخاص به والنص الآخر على وحدة التحكم. يتم تحديد رمز ASCII عن طريق تمرير متغير الحرف إلى الدالة int().
  10. يجب أن يقوم البرنامج بإرجاع القيمة عند اكتماله بنجاح.
  11. نهاية نص الدالة main().

تحويل الحرف إلى سلسلة

يوجد عدد من الطرق التي يمكننا استخدامها لتحويل الأحرف إليها سلاسل.

دعونا نناقشهم:

#1: استخدام المُنشئ المُعطى بواسطة فئة السلسلة

يمكن القيام بذلك باستخدام بناء الجملة التالي:

string st(int n,char x);

تشير المعلمة n إلى حجم السلسلة التي سيتم إنشاؤها.

المعلمة x هي الحرف المطلوب تحويله إلى سلسلة.

تقوم الدالة بإرجاع سلسلة.

مثال 5:

#include<iostream>
#include <string>
using namespace std;
int main() {
	string st(1, 'C');
	cout << "The resulting string is : " << st;
	return 0;
}

الإخراج:

تحويل الحرف إلى سلسلة

فيما يلي لقطة شاشة للكود:

تحويل الحرف إلى سلسلة

Code التفسير:

  1. تضمين ملف رأس iostream في الكود الخاص بنا لاستخدام وظائفه.
  2. قم بتضمين ملف رأس السلسلة في الكود الخاص بنا لاستخدام وظائفه.
  3. قم بتضمين مساحة الاسم std في الكود الخاص بنا لاستخدام فئاتها دون استدعائها.
  4. استدعاء الدالة الرئيسية (). يجب إضافة منطق البرنامج داخل نص هذه الوظيفة.
  5. قم بتحويل الحرف "C" إلى سلسلة ذات طول واحد وقم بتعيين السلسلة الناتجة إلى المتغير st.
  6. اطبع قيمة السلسلة st على وحدة التحكم بجانب النص الآخر.
  7. يجب أن يقوم البرنامج بإرجاع القيمة عند اكتماله بنجاح.
  8. نهاية نص الدالة main().

#2) استخدام std::string Operaتورس = و +=

إن عاملي = و+= مثقلان بالفعل بالأحرف. ويمكن استخدام الاثنين لتحويل حرف معين إلى سلسلة.

مثال 6:

#include<iostream>
#include <string>
using namespace std;
int main() {
	string st;
	char b = 'B';
	st = 'A';
	st += b;
	cout << "The resulting string is : " << st;
	return 0;
}

الإخراج:

تحويل الحرف إلى سلسلة

فيما يلي لقطة شاشة للكود:

تحويل الحرف إلى سلسلة

Code التفسير:

  1. قم بتضمين ملف رأس iostream في الكود الخاص بنا لاستخدام وظائفه.
  2. قم بتضمين ملف رأس السلسلة في الكود الخاص بنا لاستخدام وظائفه.
  3. قم بتضمين مساحة الاسم std في الكود الخاص بنا لاستخدام فئاتها دون استدعائها.
  4. استدعاء الدالة الرئيسية (). يجب إضافة منطق البرنامج داخل نص هذه الوظيفة.
  5. قم بإنشاء متغير سلسلة يسمى st.
  6. قم بإنشاء حرف اسمه b بقيمة B.
  7. قم بتعيين قيمة A للسلسلة المسماة st.
  8. استخدم عامل += لتحويل الأحرف إلى سلسلة.
  9. اطبع قيمة السلسلة st على وحدة التحكم بجانب النص الآخر.
  10. يجب أن يقوم البرنامج بإرجاع القيمة عند اكتماله بنجاح.
  11. نهاية نص الدالة main().

#3: استخدام طرق std::string

تأتي فئة std::string مع العديد من الوظائف المحملة بشكل زائد والتي يمكن أن تساعدك في تحويل الأحرف إلى سلاسل.

وهي تشمل:

  • إدفع إلى الخلف تقوم هذه الوظيفة بتعيين حرف معين لنهاية السلسلة. وهي محملة بالأحرف الزائدة. وتأخذ الصيغة التالية:
    void push_back(char ch)
    

    المعلمة ch هي الحرف الذي سيتم تغييره إلى سلسلة.

  • ألحق يقوم بتعيين العديد من النسخ من حرف معين إلى سلسلة. تأخذ الوظيفة بناء الجملة التالي:
    string& append(size_t n,char ch)
    

    تشير المعلمة n إلى الأوقات التي سيتم فيها إلحاق الحرف.

    المعلمة ch هي الحرف الذي سيتم إلحاقه بالسلسلة.

  • عين تقوم هذه الوظيفة باستبدال المحتويات الحالية للسلسلة بنسخ n من الحرف المحدد. وتأخذ الصيغة التالية:
    string& assign(size_t n,char ch);

    تشير المعلمة n إلى إجمالي النسخ للشخصية.

    المعلمة ch هي الحرف المراد نسخه في السلسلة.

  • أدخل تقوم دالة الإدراج بإدراج n نسخة من حرف في موضع بداية السلسلة، كما هو محدد في الوسائط. وتأخذ الصيغة التالية:
    string& insert(size_t p,size_t n,char ch);

    تشير المعلمة p إلى الموضع من البداية حيث سيتم إدراج الأحرف.

    تشير المعلمة n إلى إجمالي النسخ للشخصية.

    المعلمة ch هي الحرف الذي سيتم إدراجه في السلسلة.

مثال 7:

#include<iostream>
#include <string>
using namespace std;
int main() {
	string st;
	st.push_back('A');
	cout << "push_back A returns : " << st << endl;
	st = "";
	st.append(1, 'C');
	cout << "append C returns : " << st << endl;
	st = "";
	st.assign(1, 'D');
	cout << "assign D returns : " << st << endl;
	st.insert(0, 1, 'E');
	cout << "insert single character returns : " << st << endl;
	return 0;
}

الإخراج:

تحويل الحرف إلى سلسلة

فيما يلي لقطة شاشة للكود:

تحويل الحرف إلى سلسلة

  1. قم بتضمين ملف رأس iostream في الكود الخاص بنا لاستخدام وظائفه.
  2. قم بتضمين ملف رأس السلسلة في الكود الخاص بنا لاستخدام وظائفه.
  3. قم بتضمين مساحة الاسم std في الكود الخاص بنا لاستخدام فئاتها دون استدعائها.
  4. استدعاء الدالة الرئيسية (). يجب إضافة منطق البرنامج داخل نص هذه الوظيفة.
  5. قم بإنشاء متغير سلسلة يسمى st.
  6. قم بتعيين الحرف A إلى نهاية السلسلة.
  7. اطبع قيمة السلسلة st على وحدة التحكم بجانب النص الآخر. يقوم endl (خط النهاية) بنقل المؤشر إلى السطر التالي.
  8. اضبط قيمة السلسلة st على فارغة.
  9. قم بتعيين حرف واحد C للسلسلة المسماة st.
  10. اطبع قيمة السلسلة st على وحدة التحكم بجانب النص الآخر. يقوم endl (خط النهاية) بنقل المؤشر إلى السطر التالي.
  11. اضبط قيمة السلسلة st على فارغة.
  12. استبدل محتويات السلسلة st بحرف واحد D.
  13. اطبع قيمة السلسلة st على وحدة التحكم بجانب النص الآخر. يقوم endl (خط النهاية) بنقل المؤشر إلى السطر التالي.
  14. أدخل حرفًا واحدًا E في السلسلة المسماة st من فهرسها الأول.
  15. اطبع قيمة السلسلة st على وحدة التحكم بجانب النص الآخر. يقوم endl (خط النهاية) بنقل المؤشر إلى السطر التالي.
  16. يجب أن يقوم البرنامج بإرجاع القيمة عند اكتماله بنجاح.
  17. نهاية نص الدالة main().

#4: استخدام std::stringstream

لاستخدام هذه الفئة لتحويل الحرف إلى سلسلة، قم بإدراج الحرف في الدفق.

سيتم كتابتها على السلسلة.

مثال 8:

#include<iostream>
#include <string>
#include <sstream>

using namespace std;
int main() {

	string st;

	stringstream myst;

	myst << 'A'; 
	myst >> st;

	cout << "The conversion of the single character returns the string: " << st;

	return 0;
}

الإخراج:

تحويل الحرف إلى سلسلة

فيما يلي لقطة شاشة للكود:

تحويل الحرف إلى سلسلة

Code التفسير:

  1. قم بتضمين ملف رأس iostream في الكود الخاص بنا لاستخدام وظائفه.
  2. قم بتضمين ملف رأس السلسلة في الكود الخاص بنا لاستخدام وظائفه.
  3. قم بتضمين ملف رأس التدفق في الكود الخاص بنا لاستخدام وظائفه.
  4. قم بتضمين مساحة الاسم std في الكود الخاص بنا لاستخدام فئاتها دون استدعائها.
  5. استدعاء الدالة الرئيسية (). يجب إضافة منطق البرنامج داخل نص هذه الوظيفة.
  6. قم بإنشاء متغير سلسلة يسمى st.
  7. قم بإنشاء متغير دفق يسمى myst.
  8. أدخل الحرف A في كائن الدفق المسمى myst.
  9. تحويل كائن الدفق إلى سلسلة.
  10. اطبع قيمة السلسلة st على وحدة التحكم بجانب النص الآخر. يقوم endl (خط النهاية) بنقل المؤشر إلى السطر التالي.
  11. يجب أن يقوم البرنامج بإرجاع القيمة عند اكتماله بنجاح.
  12. نهاية نص الدالة main().

الأسئلة الشائعة

الحرف هو نوع بيانات يخزن حرفًا واحدًا، مثل حرف أو رقم أو رمز. يشغل بايتًا واحدًا ويحتفظ بقيمة ASCII الخاصة بالحرف داخليًا.

ASCII هو معيار يربط الأحرف بالأرقام من 0 إلى 127. C++، كل حرف يخزن رمز ASCII الخاص به، لذا فإن 'A' هو 65 و 'a' هو 97.

قم بتعريف متغير من نوع char باستخدام الكلمة المفتاحية char وحرف واحد بين علامتي اقتباس مفردتين، مثل char grade = 'A';. علامات الاقتباس المفردة مطلوبة، وليست علامات الاقتباس المزدوجة.

قم بتحويل الحرف إلى عدد صحيح، مثل int(ch) أو (int)ch، ثم اطبعه. سيؤدي هذا إلى عرض رمز ASCII الرقمي بدلاً من الحرف نفسه.

استخدم cin مع extracيُستخدم عامل التشغيل tion لقراءة حرف واحد، مثل cin متبوعًا بـ ch. ويقوم بتخزين الحرف التالي غير المسافة الذي يكتبه المستخدم.

يمكنك تعيين حرف إلى std::string، أو استخدام مُنشئ السلسلة، أو إلحاقه، مثل std::string s(1, ch)؛ لإنشاء سلسلة مكونة من حرف واحد.

تقوم مساعدات الذكاء الاصطناعي مثل GitHub Copilot بإنشاء تحويلات من الأحرف إلى ASCII، وكتابة حلقات إدخال الأحرف، واقتراح إصلاحات لأخطاء الأحرف والسلاسل الشائعة أثناء الكتابة.

نعم. تقوم الأدوات المدعومة بالذكاء الاصطناعي بإنشاء رموز ASCII وتحويل حالة الأحرف، والتعامل مع تحويلات الأحرف إلى سلاسل نصية، والإبلاغ عن الأخطاء مثل استخدام علامات اقتباس مزدوجة لحرف واحد.

تلخيص هذه التدوينة بـ: