السلام عليكم ورحمة الله وبركاته .
لدي مشكلة في دالة قمت ببرمجتها الدالة تأخذ نص مثال "odsijfi x,mcnv,xmcvnxcmvn asdasd"
تقوم بتحويل المساحات الفارغة Empty spaces إلى فراغ واحد فقط اي يفترض ان يكون الخرج "odsijfi x,mcnv,xmcvnxcmvn asdasd"
الهدف من هذه العملية انني اريد الحصول على السلسلة النصية التي في المنتصف اي "x,mcnv,xmcvnxcmvn"
حيث لا اعرف كم فراغ سيكون في النص المدخل لذلك لااستطيع استخدام الدالة Substr في ذلك او اي دالة اخرى
هذه هي الدالة التي قمت ببرمجتها
string st = " XXXXXXX UUUUUUUUU ZZZZZZZZZZZ"; cout << st << '\n'; //cin >> st; string ResultedStr = ""; string TempStr = ""; char *cArray = new char[st.size() +1]; cArray[st.size()] = 0; // إعطائها علامة Null-Terminited Character memcpy(cArray,st.c_str(),st.size()); for(int i = 0; i < st.size(); i++) // حذف كل الفراغات وإبقاء فراغ واحد فقط لاغير { if((cArray != ' ') && (cArray[i + 1] != ' ')) { TempStr += cArray; } else if((cArray != ' ') && (cArray[i + 1 == ' '])) { TempStr += cArray + ' '; } } stringstream strstr; //(tempF); cout << TempStr << '\n'; strstr.str(TempStr); string mystr1; strstr >> mystr1; string mystr2; strstr >> mystr2; cout << mystr2;"آخر / اسطر للحصول على الكلام الذي في المنتصف عن طرق التعامل مع السلسلة النصية الناتجة ك Stream :lol:
ولكن المشكلة العجيبة الغريبة التي لم استطع ان اجد لها اي تفسير هي ان الدالة تخرج السلسلة النصية التالية
XXXXXXXxUUUUUUUUUuZZZZZZZZZZZ
اي بدل الفراغ الواحد نسخت المحرف الأخير وحولته إلى Small Letter
حاولت استبدلت السلسلة النصية بسلسلة نصية تحوي رموز مثل # وارقام عشرية وفراغات وحروف
والناتج كان اكثر غرابة كان يفصل بين الاقسام بدل الفراغ الواحد علامة غريبة من الشكل التالي "+R" وفي المنتصف "+OCR"
ماهذا ؟؟؟ ولماذا حصل
ولكم جزيل الشكر اخواني الأعزاء