جستجو در تالارهای گفتگو
در حال نمایش نتایج برای برچسب های 'رشته'.
1 نتیجه پیدا شد
-
کامبیز اسدزاده یک موضوع را ارسال کرد در <span class="ipsBadge ipsBadge_pill" style="background-color: #e62f3d; color: #ffffff;" >برنامه نویسی در C و ++C</span>
با توجه به عنوان مقاله، شباهتهای بسیاری بین std::string_view و std::span وجود دارد، در واقع، string_view و span اشیاءای هستند که به یک ترتیبِ به هم پیوسته از عناصری اشاره دارند که نقطهٔ آغازین آنها از موقعیت صفر است؛ و همچنین عملیات استاندارد نگهدارندهها (ظرف) را ارائه میکنند. هر دو نوع شیء از نوع easy-to-copy (کپی آسان) هستند که دارای یک اشارهگر و یک عنصر اندازه هستند. از نظر مفهومی، آنها دیدگاههای غیر صاحب یک آرایه (یا دنبالهٔ پیوسته) هستند که رابط استاندارد غنیای را ارائه میکنند. در مورد تفاوتها (اختلافات) بین این دو، <std::span<T یک الگوی نمایش آرایهای با هدف کلی است، در حالی که std::string_view یک نمایش تخصصیتر در یک دنبالهکاراکتر یا رشته است. در زیر شرح مختصری از این تفاوتها آورده شده است: شیء span یک قالب (Template) است، اما string_view خیر! شیء span، الگویی است که با هر نوعِ تعریف شده توسط کاربر کار میکند، در حالی که string_view به طور خاص نمای یک آرایهٔ مشخص پیوسته است. از نظر سطحی یک string_view معادل <span <char است. char buff[] = "Hello World"; auto sp = std::span<char>(&buff[0], 5); auto sv = std::string_view(&buff[6], 5); for(auto c : sp) std::cout << c; //Hello std::cout << " "; for(auto c : sv) std::cout << c; //World اما، ویژگیهای string_view بیشتر از این مورد میتواند باشد. شیء string_view یک نوع فقط خواندنی برای نمایش است. یکی از ویژگیهای برجستهٔ string_view این است که این شیء فقط یک نمایش فقط خواندنی است. بنابراین، ما نمیتوانیم یک آرایهٔ زیرین را از طریق یک string_view تغییر دهیم، در حالی که این امکان از طریق span ممکن است: char str[] = "hello"; //Change str to uppercase through span auto sp = std::span<char>(str,strlen(str)); std::transform(sp.begin(), sp.end(), sp.begin(), [](char c) { return std::toupper(c); }); //str is now HELLO //Back to lowercase via string_view is not possible. auto sv = std::string_view(str); std::transform(sv.begin(), sv.end(), sv.begin(), [](char c) { return std::tolower(c); }); //ERROR! اگر string_view فقط خواندنی باشد، طول آن به اندازهٔ کافی انعطافپذیر است که از طریق <span <const T به یک نمایش فقط خواندنی تبدیل میشود. بنابراین یک string_view به یک <span <const char نزدیکتر است. البته یک ویژگی وجود دارد که string_view را تضمین میکند. شیء string_view از عملیات std::string-like پشتیبانی میکند. شیء span دارای چندین عملیات متوالی پیوسته است، به عنوان مثال: front, back, begin و operator[]. با این حال، string_view چندین روش دیگر مانند std::string دارد، به عنوان مثال: substr, find, compare سربارگذاری اپراتورها (مانند == و < یا >). بنابراین، string_view میتواند نیازِ به std::string را در مواردی که فضای زیرین آن مهم نیست را از بین ببرد.-
- span
- string_view
- (و 5 مورد دیگر)