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

العثور على الـ Spaces في الـ Strings

بدأه ::محمد:: في 22 ديسمبر 2010 · 4 رد · 706 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته ..

مرحبـاً جميعاً ..

أحاول الوصول لطريقة .. للإمساك بالـ SPACES في الـ String

مثلاً .. أريد عمل برنامج يقوم بعد الـ Spaces في الـ String

عندماً يقوم المستخدم بإدخال هذا النص بداخل String معين "فريق البرمجة العربي"

نلاحظ وجود عدد 2 Strings بداخل النص .. وهما الأولى بعد حرف القاف والثانية بعد التاء المربوطة ..

إذا قمت التالي :

int Space_Counter;
string String
for(int i = 0 ; i <String.lenght ; i++)
if(String == ' ')
Space_Counter ++ ;

فدائماً ما أحصل على خطأ سواء خطأ في تقبل الكومبايلور للصيغة أو خطأ منطقي أو ما شابه

فكيف الطريقة للإمساك بالـ Spaces .. ؟

وشكراً جزيلاً مقدماً ..

#2

و عليكم السلام و رحمة الله و بركاته,

هذا مثال مع النصوص العادية و النصوص "wide":

#include <cstddef>
#include <cassert>
#include <cctype>
#include <cwctype>
#include <string>
#include <algorithm>

int main()
{
    std::string text   = "Arab Team 2000!";
    std::wstring wtext = L"الفريق العربي للبرمجة";
    std::size_t spaces, wspaces;

    spaces   = std::count_if(text.begin(), text.end(), std::isspace);
    wspaces  = std::count_if(wtext.begin(), wtext.end(), std::iswspace);

    assert(spaces == 2 && wspaces == 2);
}

لا تنسى أن تحفظ الملف بأي صيغة unicode لأنه يحتوي على محارف عربية.

3
#3

شكراً جزيلاً أستاذ خالد الشايع ..

ولكن ما المشكلة في برنامجي .. ؟ لماذا الـ string لا يقبل العملية التي قمت بها .. ؟

وشكراً ..

تم تعديل هذه المشاركة بواسطة ::محمد:: في 24 ديسمبر 2010 في 17:44

#4
int Space_Counter; 
string String 
for(int i = 0 ; i <String.lenght ; i++) 
if(String == ' ') 
Space_Counter ++ ;

ما هي قيمة Space_Counter بعد تعريفها ؟ قد لا تكون 0 كما تتوقع وربما تكون شيء أخر موجود في تلك المساحة وقت تعريف المتغير..لذلك عليك بتحديد القيمة الابتدائية لهذا المتغير.

أيضاً هناك خطأ في اسم الدالة لديك (length() وليس lenght) ..

int Space_Counter = 0; 
string String = "Arab Team 2000" ;
for(size_t i = 0 ; i<String.length() ; i++) 
	if(String == ' ') 
		Space_Counter ++ ;

بالتوفيق،

2

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#5
Wajdy Essam كتب:

int Space_Counter; 
string String 
for(int i = 0 ; i <String.lenght ; i++) 
if(String == ' ') 
Space_Counter ++ ;

ما هي قيمة Space_Counter بعد تعريفها ؟ قد لا تكون 0 كما تتوقع وربما تكون شيء أخر موجود في تلك المساحة وقت تعريف المتغير..لذلك عليك بتحديد القيمة الابتدائية لهذا المتغير.

أيضاً هناك خطأ في اسم الدالة لديك (length() وليس lenght) ..

int Space_Counter = 0; 
string String = "Arab Team 2000" ;
for(size_t i = 0 ; i<String.length() ; i++) 
	if(String == ' ') 
		Space_Counter ++ ;

بالتوفيق،

الأستاذ وجدي عصام ..

تحية طيبة ..

أشكرك على تفاعلك معي في موضوعي ..

وأما المِثال الذي وضعته .. فلقد قمت بتصفير المتغير Space_Counter فَمِن المَعرُوف أن تضهر لدي القِيمة carbige في حالة عَدَم التصفير .. وكذلك أيضاً الدالة length .. ولكن أنا وضعته مِن باب الـ Syntax لا أكثر .. ومع ذلِك لا تضهر لدي القِيمَة الصحيحة ..

شكراً لَك .. وأتمنى مرورك مِن جديد لننهل مِن عِلمِك أخِي الكَرِيم .. أطيب الأماني ..

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