PDA

View Full Version : سوال: String to char



meysamg_alone
شنبه 02 خرداد 1388, 20:31 عصر
سلام به همه
من یه مشکل دارم می خوام یه رشته خاص به char تبدیل کنم این رشته اینه

string str1;
str1 = str1 + "meysam" + (char) 5 + (char)0 + "ali"+ (char) 0 + (char)0;
char ch1[30];
strcpy(ch1,str1.c_str());

خب این تبدیلی که من می کنم اشتباه یعنی فقط فکر کنم meysam + (char)5 کپی بشه از چار 0 هم کپی نمیشه !:ناراحت:
باید راه دیگه ای هم باشه که این مشکل نباشه :متفکر:

tdkhakpur
شنبه 02 خرداد 1388, 21:41 عصر
سلام:
strcpyتا وقتی که به 0نرسه عمل کپی رو انجام میده کد زیر رو استفاده کن.
این روش دستی strcpy هست.


int len;
len = strlen(str1.c_str());
len = len>29 ? 29 : len;
memcpy(ch1, str1.c_str(), len)
str[ch1] = 0;

Nima_NF
یک شنبه 03 خرداد 1388, 22:59 عصر
منظورتان از 0 char یا char 5 چه هست ؟ کارکتر صفر همان null هست، به همین خاطر در تابع strcpy فقط تا همان 0 را کپی می کند و کارکتر 5 را به شکل مربع (از لحاظ شکلی بی معنا) نشان می دهد.

کلاس string طبق قوانینی رشته تعریف شده است. یعنی اگر به NULL رسید رشته تا همانجا تمام می شود. پس اگر قرار هست آرایه ای از رشته ها داشته باشید به همراه کارکترهای مختلف و دلخواه، آنگاه باید از همان آرایه های مرسوم استفاده کنید. کلاس string برای ذخیره یک رشته هست و از آنجایی که یک کلاس هست معلوم نیست با حافظه اضافی چکار می کند یا کی بقیه را پاک می کند(اگر خودتان با resize , reserve تخصیص نداده اید) پس کار کردن با کارکترهای بعد از 0 / NULL خطرناک خواهد بود.