std :: স্ট্রিংয়ের দৈর্ঘ্য () এবং আকার () সদস্য ফাংশন


263

আমি এই প্রশ্নের উত্তরগুলি পড়ছিলাম এবং দেখতে পেলাম যে আসলে একটি পদ্ধতির length()জন্য ডাকা হয়েছিল std::string(আমি সর্বদা ব্যবহার করি size())। std::stringক্লাসে এই পদ্ধতি থাকার কোনও নির্দিষ্ট কারণ আছে কি ? আমি এমএসডিএন এবং সিপ্পিফেরেন্স উভয়ই পড়েছি এবং তারা মনে করে যে size()এবং এর মধ্যে কোনও পার্থক্য নেই length()। যদি তা হয় তবে এটি শ্রেণীর ব্যবহারকারীর জন্য আরও বিভ্রান্তিকর সৃষ্টি করছে না?

উত্তর:


340

অনুযায়ী ডকুমেন্টেশন , এই মাত্র প্রতিশব্দের হয়। size()অন্যান্য STL পাত্রে (যেমন সঙ্গে সামঞ্জস্যপূর্ণ সেখানে হতে হয় vector, map, ইত্যাদি ) এবং length()অক্ষর স্ট্রিং অধিকাংশ লোকের স্বজ্ঞাত ধারণা সঙ্গে সামঞ্জস্যপূর্ণ হতে হয়। লোকেরা সাধারণত কোনও শব্দ, বাক্য বা অনুচ্ছেদের দৈর্ঘ্যের বিষয়ে কথা বলে থাকে , এর আকার নয়, তাই length()জিনিসগুলিকে আরও পাঠযোগ্য করে তোলার জন্য রয়েছে।


9
একমত। আমি যখন টেম্পলেট ক্লাস এবং ফাংশন লিখি আমি বরং ব্যবহার করতাম size()(যদি আমি কখনও স্ট্রিং ক্লাস ব্যবহার করি না) তবে বেশিরভাগ সময় আমি length()সরল স্ট্রিংয়ের সাথে কাজ করার সময় ব্যবহার করি ।
মারিয়াস

3
আকার () মেমরিতে স্ট্রিংয়ের আকার (বাইটগুলিতে) ফিরিয়ে দেয় না, যেখানে দৈর্ঘ্য () অক্ষরের সংখ্যা প্রদান করে, যা কেবল 1 চর = 1 বাইটের সাথে মিলে যায়?
বায়ান কুশলভ

4
তারা একই ফাংশন; এমনকি তারা ডকুমেন্টেশন শেয়ার করে: en.cppreferences.com/w/cpp/string/basic_string/size
টড গাম্বলিন

4
এগুলি উভয়ই দূরত্ব (s.begin (), s.end ()) এর সমতুল্য হিসাবে সংজ্ঞায়িত হয়েছে, যেখানে শুরু () এবং শেষ () চার্ট উপাদানগুলির উপর পুনরাবৃত্তি হয়। চার্ট একটি টেম্পলেট প্যারামিটার যা স্ট্রিংয়ে রয়েছে তা নির্ধারণ করে। স্ট্যান্ডিং :: স্ট্রিংয়ের জন্য, চারটি চার্ট। Std :: wstring এর জন্য চার্টটি wchar_t, যা সাধারণত 2 বা 4 বাইট হয়। এমনকি সেখানে, দৈর্ঘ্য () এবং আকার () উভয়ই স্ট্রিংয়ের অক্ষরের সংখ্যা প্রদান করবে , বাইটের সংখ্যা নয়।
টড গাম্বলিন

5
আপনার অবশ্যই ভুলে যেতে হবে কখনও কখনও লোকেরা ইউটিএফ 8 স্ট্রিংটি সঞ্চয় করতে std :: স্ট্রিং ব্যবহার করবে । এবং utf8 স্ট্রিং হল পরিবর্তনশীল দৈর্ঘ্যের কোডিং , তারপরে আপনি স্ট্রিং অক্ষরের গণনা পেতে দৈর্ঘ্য () বা আকার () ব্যবহার করতে পারবেন না। বাস্তবে তারা কেবলমাত্র উপাদানটির গণনা ফিরিয়ে দেয়:std::string=> std::bacsic_string<char> count of char std::wstring => std::basic_string<wchar_t> count of wchar_t.
শিন টিয়ান

16

রুবি এর ঠিক একই, BTW, নৈবেদ্য উভয় #length এবং #size অ্যারে এবং হ্যাশ আইটেম সংখ্যা (সি ++ শুধু এটা স্ট্রিং জন্য আছে) জন্য সমার্থক হিসেবে।

ন্যূনতমবাদী এবং যারা বিশ্বাস করেন "এটির একটি অবশ্যই হওয়া উচিত, এবং আদর্শভাবে কেবল এটির একটি সুস্পষ্ট উপায়" (পাইথনের জেন যেমন আবৃত্তি করে), আমার ধারণা, বেশিরভাগই আপনার সন্দেহগুলির সাথে একমত হবেন, @ নবীন, যদিও পার্লের ভক্তরা " এটি করার একাধিক উপায় রয়েছে "(বা এসকিউএল এর বাকল মিলিয়ন alচ্ছিক" শব্দ শব্দ "সহ একটি ধারণা প্রকাশের জন্য সমতুল্য সমতুল্য সিনট্যাকটিক ফর্মগুলি সরবরাহ করে) এতে সন্দেহ নেই যে রুবি এবং বিশেষত সি ++ কেবল দূরে যেতে পারবেন না এই ধরনের সিনডিক্যাল রিডানডেন্সি ;-) প্রদানের ক্ষেত্রে যথেষ্ট।


9
এই ক্ষেত্রে এটি কৃতজ্ঞ। পার্লের ব্যাকরণ এবং ব্যবহার আপনাকে পছন্দসই স্টাইল ব্যবহার করে জিনিসগুলি প্রকাশ করতে দেয়। একই জিনিসটির জন্য দুটি পৃথক শব্দ থাকা কেবল স্ট্যাকওভারফ্লোতে অনুসন্ধান-শর্তাবলী নিয়ে আসা কঠিন করে তোলে।
অ্যাড্রিয়ান রত্নপালা

0

কোডিং অনুশীলন সরঞ্জামগুলি (লেটকোড) ব্যবহার করার সময় মনে হয় আকার () দৈর্ঘ্যের চেয়ে দ্রুত () যদিও মূলত তুচ্ছ)


-10

স্ট্রিংয়ের দৈর্ঘ্য == কত বিট থাকে তার স্ট্রিং থাকে, সেই বিটগুলির আকার == আকার, স্ট্রিংগুলিতে উভয়ই সমান হয় যদি সম্পাদক অক্ষরের আকার 1 বাইট বরাদ্দ করে


7
ভুল উত্তর. গৃহীত উত্তরে লিঙ্কযুক্ত ডকুমেন্টেশন দেখুন।
স্টিফান ডি কোক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.