اولین بار است که به این وب‌سایت می‌آیید. راهنما را مطالعه کنید!
x
موسسه خیریه محک

شهر ریاضی بازی-ریاضی

تفاوت رشته با آرایه ای از کاراکتر ها چیست؟

+4 امتیاز
8,786 نمایش

با اینکه خیلی با هر دوی اینها کار کردم، ولی الان متوجه شدم که هنوز فرق بین رشته و آرایه ای از کاراکترها رو نمیدونم!
خودم فکر میکنم هر دو مثل هم هستن، ولی مطمین نیستم.
آیا تفاوتی هست؟
آیا رشته همون آرایه کاراکترها با یک سری خصوصیات ناملموسه؟

برنامه‌ای که تست نشده کار نخواهد کرد (Stroustrup, Bjarne)
پرسیده شده یکشنبه ۵ آذر ۱۳۹۱ در C++ توسط CPP_Crawler3  
بازتگ شده جمعه ۲۳ فروردین ۱۳۹۲ توسط admin

3 پاسخ

+1 امتیاز
 
بهترین پاسخ

در زبان C رشته یه نوع داده‌ی جداگانه نیست. بلکه آرایه‌ای از کاراکترهاست که آخرین عضوش کاراکتر null هست. شبیه یه آرایه از اعداد صحیح با تفاوت همون عضو اضافی.

در زبان C++ رشته یه نوع داده‌ست که در سرفایل string تعریف شده و یه کلاس هست با تعدادی توابع عضو و عملگرهای سربارگذاری شده.

تبدیل رشته‌ی C به رشته‌ی C++ با استفاده از سازنده‌ی string هست

#include <iostream>
#include <string>

int main()
{
  char c[] = "Hello World!";
  string s = string(c);
  std::cout<<s;
  return 0;
}

تبدیل رشته‌ی C++ به رشته‌ی C با استفاده از تابع c_str می‌شه

#include <iostream>
#include <string>

int main()
{
  string s = "Hello world!";
  const char *c = s.c_str();
  std::cout<<c;
  return 0;
}
هیچ پژوهش انسانی نمی‌تواند ادعای علمی بودن داشته باشد، مگر این‌که از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)
پاسخ داده شده جمعه ۲۷ اردیبهشت ۱۳۹۲ توسط prodo  
انتخاب شده سه شنبه ۲۱ خرداد ۱۳۹۲ توسط admin
+2 امتیاز

از اونجایی که رشته به طور کلی مجموعه‌ای از کاراکتر‌ها محسوب میشه، شما به هر صورتی حتی با لیست پیوندی از کاراکتر‌ها هم میتونید اونو تعریف کنید.
ولی تفاوتی که آرایه‌ای از کاراکتر با نوع داده string چی میتونه باشه:
در زبان C، تنها یک تفاوت کوچیک وجود داره و اون اینه که یک string در زبان C اشاره‌گری به یک سری کاراکتر پشت سر همه که به NULL منتهی میشه.
و در زبان شیءگرای C++ نوع داده String شیءای از کلاس String هست، که این اطلاعات رو در آرایه‌ای از کاراکتر‌ها هم میشه نگه داشت ولی ما نیازی به این نداریم! چرا که آرایه‌ای از کاراکتر‌ها یک آرایه کاملا ساده معمولیه، در حالیکه کلاس String میتونه به عملگر‌ها و توابع مختلفی دسترسی داشته باشه که هروقت نیازی بود به کار برده بشه.

پاسخ داده شده دوشنبه ۱۴ اسفند ۱۳۹۱ توسط CPP_Crawler4  

یعنی این که string یک کلاس هست با توابع خودش. و بنا بر تعریفش می‌شه هر طوری که برنامه‌نویس میخاد پیاده بشه. اما c-string دقیقاً تعریفش یعنی یک آرایه‌ی متنهی به null

0 امتیاز

توی c++، تفاوتی که رشته و آرایه‌ای از کاراکترها دارن، اینه که اولا رشته نمیتونه دارای فضای خالی (space) باشه. موقعی که شما در حال ورود اطلاعات به رشته هستین، اگر اسپیس بزنین، اطلاعات بعد از اسپیس توی رشته ذخیره نمیشه. ولی توی آرایه‌ای از کاراکترها میشه اسپیس هم ذخیره کرد.
یکی دیگه از تفاوت‌هاشون توی بحث فایل‌ها هست. خوندن و نوشتن اطلاعات فایل به وسیله رشته، با خوندن و نوشتن اطلاعات به وسیله آرایه‌ای از کاراکترها متفاوته.
تفاوت آخر هم توی تعریف این دو متغیر هست. توی تعریف متغیر رشته‌ای، نیازی نیست که سایزش وارد بشه. ولی توی تعریف آرایه کاراکتری، حتما باید سایزش وارد بشه.

پاسخ داده شده شنبه ۱۳ تیر ۱۳۹۴ توسط newreza