اذهب إلى المحتوى
  • 0

خطأ في تعريف محرف فارغ في ++C

Mohammed Hhhh

السؤال

how to remove char from string with out using functions  in 

لقد حاولت ان اقوم بأزالة char من ال string  في سي بلس بلس  و لم ينفع هذا هو كودي :

    string sss = "    ";
    
    for (int i = 0; i <= 4; i++) {
        sss[i] = '';
        cout << endl; 
    }
    cout << sss; 

 

Screenshot 2022-08-26 145010.png

تم التعديل في بواسطة Hassan Hedr
توضيح العنوان
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

جرب استخدام المحرف الصفري '\0'

#include <iostream>

using namespace std;

int main()
{
    cout<<"Start\n";
    string sss = "0123456";
    
    for (int i = 0; i <= 4; i++) {
        sss[i] = '\0';
    }
    cout << sss; 
    cout<<"\nEnd";

    return 0;
}

سوف يطبع: 

Start
56
End

أي لايوجد قيمة للمحارف من 0 حتى 4

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

لا يمكن تعريف محرف فارغ في ++C، بما أن الغرض من عملي الإسناد تلك هو حذف محرف في المكان الحالي، فيمكنك استخدام التابع erase لمسح محرف ما بالطريق التالية: 

for (int i = 0; i <= 4; i++) {
  sss.erase(i, 1);
  ..
}

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

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

كمثال على ذلك بفرض أنه لدينا سلسلة و نريد إزالة الأحرف الصوتية منها، يمكننا القيام بذلك كما يلي:

string s = "The bird is on the tree";
string t = "";
for (int i = 0 ; i < s.size() ; ++i){
	if(s[i] != 'a' && s[i] != 'e' && s[i] != 'i' && s[i] != 'o' && s[i] != 'u')
    		t += s[i];
}

cout << t << '\n';

لماذا لا نقوم كل مرة بالحذف من السلسلة مباشرة؟
السبب وراء ذلك أن عملية الحذف مكلفة حسابياً، حيث أنه في كل مرة نقوم بالحذف فيها سنقوم بعملية إزاحة لكافة المحارف التي تلي المحرف المحذوف، و هذا مكلف في حال كانت السلسلة طويلة جداً.

تم التعديل في بواسطة Kais Hasan
رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...