دوست عزیز شما اول بیا و کامل همه چیز رو بخون و فکر میکنم که منابع رو قبول داری پس در مورد منابع مشکلی نیست و بزار قدم به قدم جلو بریم
۱- اول با آرامش و دقت این متن رو بخون که نشون میده string یک داده built-in نیست
Putting aside any string-related facilities inherited from C, in C++, strings are not a built-in data type
۲- حالا دومی اصلا عجله نکن نشون میده string یکی از الگوهای (کلاس - آبجکت - شی و یا هر چیزی که دوست داری اسمش رو بزاری) کتابخانه STL هستش
std::string is a typedef for a particular instantiation of the basic_string class template. Its definition is found in the <string> header and in the std namespace
هدف از بحث این دو مورد بود اگه قبول کردی که بقیه رو نخون وگرنه برو بعدی
هدف از معرفی اون مرجع اون خط نبود چیزی بود که در پایین ذکر کردم پس بهش توجه کن(من نمیخوام تحلیل کنم که چرا گفته کلاس) دوست عزیز شما بهش بگو کلاس اگه ماشین هم ببینیم حتما باید بهش بگیم آهن چون از آهن ساخته شده ولی این مهم نیست به هر حال هر کسی ممکنه که هر چیزی رو به هر اسمی صدا بزنه
std::string is a typedef for a particular instantiation of the basic_string class template. Its definition is found in the <string> header and in the std namespace.[1]
typedef basic_string<char> string;
سمت راست، بالا نوشته C++ Standard Library و زیرش نوشته Input/Output و Strings که همون Strings انتخاب شده. خوب این یعنی String جزئی از C++ Standard Library هستش.
زیر Standard Template Library نوشته شده algorithm, bitset, functional, ... که ربطی به string نداره. کافی نیست؟ »
این چه تحلیلیه ! ! ! من ترجیح میدم که در موردش حرف نزنم
اگر اونجوری بخوای بگی cin و printf هم جزئی از ++C نیست، چون cin توی هدر istream و fprint توی هدر cstdio قرار داره. حداقل خودتون خودتون رو نقض نکنید.
زبان ++C بدون C++ Standard Library مثل #C بدون NET. میمونه. در ضمن include کردن و هدرفایلها ربطی به در زبان بودن یا نبودن ندارند، کلا کاربرد Headerها چیز دیگهای هست.
به cin و printf توجه نکرده بودم بله اونها هم جزیی از کتابخانهها هستند و نه جز هسته سی پلاس
عزیز من .NET یک فریم ورک هستش چه ربطی به ساختار و سینتکس داره حرف ما چیز دیگهای هستش (خود زبان برنامه نویسی و string)
میشه کاربرد هدرفایلها رو بگید شاید من رو از یک اشتباه بزرگ رهایی بدید
پس متوجه کار برنامه ++C نشدید، چون چیزی که نوشته بودید اصلا معادل نبود. وقتی میگید معادل، یعنی باید دقیقا برنامهتون کار برنامه دیگه رو بکنه. توی برنامه ++C میاد از Console ورودی میگیرید، توی #C خودتون ۲۴ رو دستی اضافه میکنید، توی ++C یک Type جدید تعریف میکنید، توی #C کلا بیخیال اون قسمت میشید؟ شما دو برنامه متفاوت نوشتید و گفتید یکسان هستند که ثابت کنید #C سادهتره. خوب این حرکت اشتباهه، ولی خوب کسی که کمی برنامهنویسی بلد باشه میتونه راحت بفهمه که اون دو برنامه معادل نبودند. حالا بذارید پس من معادل اون برنامه ++C رو به #C براتون بنویسم:
من پوزش میخوام که سی شارپ راه حلهای سادهای هم داره که کدنویسی رو کم میکنه
توی مقایسه هدف انجام کار مشابه هستش نه مشابه بودن کد
منظور از معادل این نیست که شبیه سازی کنیم وگرنه چرا این همه زبان به وجود میاد چرا باید از سی شارپ با اون فریمورک سنگینش و از STL و QT و ... استفاده کرد
واقعا به این چیزی که گفتید ایمان دارید
هدف از بحث یادگیری هستش نه اینکه کسی بخواد (من یا شما) حرفش رو به کرسی بشونه به نظر من برای استفاده کسایی که ممکنه بعدا این تاپیک رو بخونن به جمع بندی برسیو و تمومش کنیم و خواهش میکنم توی همین موضوع بمونیم
۱- string آیا جزیی از ساختار (هسته) سی پلاس پلاس هستش و یا یک template از STL
۲- سینتکس سی شارپ استاندارد تر است یا سی پلاس پلاس
۳- هر چیزی که با کلاس ساخته بشه (string) آیا باز هم باید کلاس خوانده بشه و یا چیزی که باهاش ساخته شده (شی - object)
اگه موافقی پاسخ اینها رو بده شاید من اشتباه کنم و این باعث بشه که من از اشتباه در بیام من تازه با اجزای استاندارد سی پلاس آشنا شدم
اگه دوستان دیگه هم مشارکت کنن ممنون میشم