স্ট্যান্ড :: স্ট্রিংয়ের মুখে কেন এতগুলি স্ট্রিং ক্লাস রয়েছে?


56

আমার কাছে মনে হয় যে অনেক বড় সি ++ গ্রন্থাগার তাদের নিজস্ব স্ট্রিং ধরণের তৈরি করে। ক্লায়েন্ট কোডে আপনি হয় লাইব্রেরি থেকে ব্যবহার করতে হবে ( QString, CString, fbstringবা মান টাইপ এবং এক মধ্যে রূপান্তর গ্রন্থাগার ব্যবহারের (যা অধিকাংশ সময় জড়িত রাখা ইত্যাদি, আমি নিশ্চিত যে কেউ কয়েক নাম পারব) কমপক্ষে একটি অনুলিপি)।

সুতরাং, এখানে কোনও নির্দিষ্ট অপব্যবহার বা ভুল কিছু আছে std::string(যেমন auto_ptrশব্দার্থকগুলি খারাপ ছিল)? এটি কি C ++ 11 এ পরিবর্তিত হয়েছে?


32
এটিকে "নোট ইনভেন্টেড হিয়ার সিনড্রোম" বলা হয়।
ক্যাট প্লাস প্লাস

10
@ গেটপ্লাস প্লাস কিউ স্ট্রিং এবং সিএসস্ট্রিং উভয়ই পূর্বনির্ধারিত স্ট্যান্ড :: স্ট্রিং।
রোবট

8
@ গুগল প্লাস প্লাস: এই সিন্ড্রোম জাভা স্ট্রিং ক্লাসে প্রভাব ফেলবে বলে মনে হয় না।
জর্জিও

20
@ জিওর্জিও: জাভা প্রোগ্রামাররা স্ট্রিং ক্লাসগুলির জন্য চিন্তার জন্য ভাষার ঘাটতিগুলির জন্য উদ্বেগ উদ্ভাবনের জন্য খুব ব্যস্ত (অ্যান্ড্রয়েড পুনরায় উদ্ভাবিত স্ট্রিং, উপায়)।
বিড়াল প্লাস প্লাস

9
@ জর্জিও: এটি সম্ভবত কারণ জাভার হার্ড-কোডিং সিনট্যাকটিক সমর্থন java.lang.String(অপারেটর ওভারলোডিংয়ের অভাব ইত্যাদির জন্য) অন্য কোনও কিছু ব্যবহারে ব্যথা করে।
যান্ত্রিক শামুক

উত্তর:


57

সেই বৃহত সি ++ লাইব্রেরিগুলির বেশিরভাগই std::stringমানক হওয়ার আগেই শুরু হয়েছিল। অন্যের মধ্যে অতিরিক্ত বৈশিষ্ট্য অন্তর্ভুক্ত রয়েছে যা দেরীতে মানিক করা হয়েছিল, বা এখনও মানক নয়, যেমন ইউটিএফ -8 এর সমর্থন এবং এনকোডিংয়ের মধ্যে রূপান্তর।

যদি আজ সেই লাইব্রেরিগুলি প্রয়োগ করা হয়, তবে তারা সম্ভবত ফাংশন এবং পুনরাবৃত্তকারীগুলি লিখতে বেছে নেবে যা std::stringদৃষ্টান্তগুলিতে কাজ করে ।


5
ইউটিএফ -8 এর জন্য সমর্থন সি ++ 98 এর পরে মানক করা হয়েছে। এ জাতীয় অসুবিধাজনক এবং আংশিক বাস্তবায়ন সংজ্ঞায়িত উপায়ে যে কেউই এটি ব্যবহার করতে সক্ষম বলে মনে হচ্ছে না
এপ্রোগ্রামার

9
@ এপ্রোগ্রামার: charকোনও ইউটিএফ -8 কোডপয়েন্ট রাখতে যথেষ্ট বড় হওয়ার গ্যারান্টিযুক্ত। আফাইক, এটিই একমাত্র "সমর্থন" যা সি ++ 98 সরবরাহ করেছিল।
বেন ভয়েগট

4
@ অপপ্রগ্রামার: এই সমর্থনটি সত্যিই যথেষ্ট অকেজো।
ডেড এমজি

4
যে লোকেল @AProgrammer তর্কসাপেক্ষে ভাঙ্গা থেকে হয় wchar_tহয় না যথেষ্ট বড় সব ইউনিকোড কোড পয়েন্ট প্রতিনিধিত্ব করতে। তদুপরি, ইউটিএফ -16 সম্পর্কে এই পুরো আলোচনাটি ক্ষতিকারক হিসাবে বিবেচিত হয়েছিল যেখানে অত্যন্ত বাধ্যতামূলক যুক্তিটি তৈরি করা হয়েছিল যে ইউটিএফ -8 একচেটিয়াভাবে ব্যবহার করা উচিত
কনরাড রুডলফ

6
@ কনরাডরুডল্ফ, এটি লোকাল সিস্টেম নয় যা সেখানে ভেঙে গেছে (ডাব্লুচিকার_টির সংজ্ঞা "কোনও সমর্থিত চরিত্রের সেটের জন্য যথেষ্ট প্রশস্ত"); 16 বিট প্রতিশ্রুতিবদ্ধ সিস্টেমগুলি wchar_t একই সাথে ইউনিকোডকে সমর্থন না করার প্রতিশ্রুতিবদ্ধ। ঠিক আছে, অপরাধীটি ইউনিকোড যা প্রথমে গ্যারান্টি দিয়েছিল যে এটি 16 বিটের বেশি কোডপয়েন্টগুলি কখনই ব্যবহার করবে না, তারপরে 16 বিট wchar_t এর প্রতি জড়িত সিস্টেমগুলি, তারপরে ইউনিকোডে 16 টিরও বেশি বিটের দরকার হবে।
এপ্রোগ্রামার

39

স্ট্রিংটি সি ++ এর বড় বিব্রত।

প্রথম 15 বছরের জন্য আপনি মোটেও স্ট্রিং ক্লাস সরবরাহ করেন না - প্রতিটি প্ল্যাটফর্মের প্রতিটি সংকলক এবং প্রতিটি ব্যবহারকারীকে তাদের নিজস্ব তৈরি করতে বাধ্য করে।

তারপরে আপনি এমন কিছু তৈরি করেন যা একটি সম্পূর্ণ স্ট্রিং ম্যানিপুলেশন এপিআই বা কেবল একটি এসটিএল চর ধারক হিসাবে কিছু স্ট্যান্ডার্ড :: ভেক্টরটিতে নকল করে বা আলাদা কিনা তা নিয়ে বিভ্রান্ত।

যেখানে প্রতিস্থাপন () বা মাঝের () এর মতো স্পষ্ট স্ট্রিং অপারেশনটিতে পুনরাবৃত্তিকারীদের এমন গোলমাল জড়িত যে আপনাকে একটি নতুন পৃষ্ঠায় স্টেটমেন্ট ফিটিং রাখতে একটি নতুন 'অটো' কীওয়ার্ড প্রবর্তন করতে হবে এবং বেশিরভাগ লোককে পুরো ভাষার উপর ছেড়ে দিতে পরিচালিত করবে ।

এবং তারপরে আপনার ইউনিকোড 'সমর্থন' এবং স্ট্যান্ড :: wstring যা কেবল আরঘ .....

আপনাকে ধন্যবাদ - আমি এখন অনেক ভাল বোধ করছি।


12
@ ডিড এমএমজি - হ্যাঁ এবং এটি 1998 সালে আবিষ্কার করা হয়েছিল, এটি আবিষ্কারের 15 বছর পরে এবং এমএসএফটি এমনকি 6 বছর পরেও এটি ব্যবহার করছে। হ্যাঁ আয়রেটরগুলি অ্যারে তৈরি করার একটি কার্যকর উপায় এবং তালিকাটি দেখতে একই রকম, আপনি কি মনে করেন যে তারা স্ট্রিং ম্যানিপুলেশন করার একটি সুস্পষ্ট উপায়?
মার্টিন বেকেট

3
C সহ ক্লাসগুলি উদ্ভাবিত হয়েছিল 1983. সি ++ নয়। কেবলমাত্র স্ট্যান্ডার্ড লাইব্রেরিগুলি স্ট্যান্ডার্ড দ্বারা নির্ধারিত- যা আশ্চর্যজনকভাবে যথেষ্ট, কেবল একবার আপনার কাছে স্ট্যান্ডার্ড থাকলেই ঘটতে পারে, সুতরাং যে কোনও স্ট্যান্ডার্ড লাইব্রেরির প্রথমতম তারিখটি 1998 হয় And এবং পুনরুক্তিগুলি সূচকের ঠিক সমান হিসাবে বিবেচিত হতে পারে তবে দৃ .়ভাবে টাইপ করা হয়। আমি এই ঘটনার জন্য সমস্ত যে পুনরাবৃত্তির পরিসীমা তুলনায় স্তন্যপান, কিন্তু এটি আসলে নির্দিষ্ট নয় std::string। 1983 সালে একটি স্ট্রিং ক্লাসের অভাব এখন তাদের আরও বেশিকে যুক্তিসঙ্গত করে না।
ডেডএমজি

8
আমি ভেবেছিলাম আইওস্ট্রিমগুলি সি ++ এর বড় বিব্রতকরতা ছিল ...
ডগ টি।

18
@ ডিএডএমজি লোকেরা 1998 সালের অনেক বছর ধরে "সি ++" নামে কিছু ব্যবহার করছিল। আমি 1985 সালে "সি ++" নামে কিছু ব্যবহার করে আমার প্রথম প্রোগ্রামটি লিখেছিলাম। আপনি যদি বলতে চান যে এটি "আসল" সি ++ নয়, তবে এটি ঠিক আছে, তবে এর আগে, আমরা কোড লিখছিলাম এবং কোথাও থেকে স্ট্রিং ক্লাস পেতে হয়েছিল। একবার আমাদের এই উত্তরাধিকারের কোডবেসগুলি হয়ে গেলে, আমরা যখন কোনও স্ট্যান্ডার্ড পেয়ে যাই তখন আমরা ঠিক এগুলি ফেলে দিতে পারি না বা স্ক্র্যাচ থেকে পুনরায় লিখতে পারি না। এখন যা হওয়া উচিত ছিল তা হল স্ট্রিং ক্লাসটি সিফ্রন্টের সাথে আসা উচিত ছিল।
রোবট

8
@ ডিডএমজি - যদি আইএসও সনদ না পাওয়া পর্যন্ত কেউ ভাষা ব্যবহার না করে তবে কোনও ভাষা আর ব্যবহার করা হবে না কারণ এটি কখনই আইএসওতে পাবে না। X86 এসেম্বলারের জন্য কোনও আইএসও মান নেই তবে আমি প্ল্যাটফর্মটি ব্যবহার করে খুশি
মার্টিন বেকেট

32

আসলে ... এর সাথে বেশ কয়েকটি সমস্যা রয়েছে std::stringএবং হ্যাঁ এটি সি ++ 11 এ কিছুটা ভাল হয়ে যায় তবে আসুন আমরা নিজেরাই এগিয়ে যাই না।

QStringএবং পুরানো গ্রন্থাগারের CStringঅংশ , সুতরাং সি ++ মানক হওয়ার আগে তারা অস্তিত্ব ছিল (অনেকটা এসজিআই এসটিএলের মতো)। তাদের এভাবে ক্লাস তৈরি করতে হয়েছিল

fbstringখুব নির্দিষ্ট পারফরম্যান্স উদ্বেগ সমাধান করুন। স্ট্যান্ডার্ডটি একটি ইন্টারফেস নির্ধারণ করে এবং অ্যালগরিদমিক জটিলতা মিনিমার গ্যারান্টি দেয়, তবে এটি কার্যকর হওয়ার গুণাবলীর বিশদ যা এই শেষটি দ্রুত হচ্ছে কিনা। fbstringনির্দিষ্ট অপ্টিমাইজেশন রয়েছে (স্টোরেজ-সম্পর্কিত, বা findউদাহরণস্বরূপ একটি দ্রুত )।

অন্যান্য উদ্বেগ যা এখানে উত্পন্ন হয়নি (en vrac):

  • সি ++ 03 এ স্টোরেজটি সামঞ্জস্যপূর্ণ হওয়া বাধ্যতামূলক নয়, সি এর সাথে আন্তঃব্যবযোগিতা তৈরি করা সম্ভাব্যভাবে কঠিন। সি ++ 11 এটি স্থির করে।
  • std::string অজান্তে এনকোডিং হচ্ছে, এবং ইউটিএফ -8 এর জন্য কোনও বিশেষ কোড নেই, এটিতে কোনও ইউটিএফ -8 স্ট্রিং সংরক্ষণ করা সহজ এবং অজান্তেই এটি দূষিত করে তোলে
  • std::stringইন্টারফেসটি ফুলে যায় , অনেকগুলি পদ্ধতি ফ্রি-ফাংশন হিসাবে প্রয়োগ করা যেতে পারে এবং অনেকগুলি সূচক-ভিত্তিক ইন্টারফেস এবং একটি পুনরাবৃত্ত-ভিত্তিক ইন্টারফেসের সাথে মানিয়ে নিতে নকল করা হয়।

5
উদ্বেগ # 1 - সি ++ 03 21.3.6 / 1 গ্যারান্টি দেয় যা c_str()একটি পয়েন্টারটিকে সংক্ষিপ্ত স্টোরেজতে ফেরত দেয় যা কিছু সি-ইন্টারঅ্যাপেরিবিলিটির জন্য সরবরাহ করে। তবে আপনি পয়েন্ট-টু ডেটা পরিবর্তন করতে পারবেন না। সাধারণ workarounds একটি ব্যবহার অন্তর্ভুক্ত vector<char>
জন ডিবলিং

@ জনডিবলিং: হ্যাঁ, এবং আরও একটি সীমাবদ্ধতা রয়েছে: এটি সদ্য বরাদ্দকৃত স্টোরেজে একটি অনুলিপি গ্রহণ করতে পারে (স্ট্যান্ডার্ড এটি বলে না যে এটি করবে না)। অবশ্যই সি ++ 11 টিও অনুলিপি প্রতিরোধ করে না, তবে যেহেতু আপনি কেবল &s[0]এটি করতে পারেন তা আর কোনও ব্যাপার নয় :)
ম্যাথিউ এম।

1
@ ম্যাথিউইউম .: প্রাপ্ত পয়েন্টারটি কোনও NUL- &s[0]সমাপ্ত স্ট্রিংকে নির্দেশ নাও করতে পারে (যতক্ষণ c_str()না শেষ পরিবর্তনটি বলা হয়)।
বেন ভয়েগট

2
@ ম্যাথিউউ: আরেকটি বাফার অনুমোদিত নয়। " c_str()রিটার্নস: প্রতিটি ইন-এর জন্য pএমন পয়েন্টার "। p + i == &operator[](i)i[0,size()]
বেন ভয়েগট

3
আরও লক্ষণীয় যে, তাদের সঠিক মনের কেউই আর এমএফসি ব্যবহার করে না, তাই যুক্তি দেওয়া শক্ত যে সিএসট্রিং আধুনিক সি ++ এর স্ট্রিং ক্লাস।
ডেডএমজি

7

এখানে পোস্ট করা কারণগুলি ছাড়াও আরও একটি রয়েছে - বাইনারি সামর্থ্য । আপনি কোন std::stringবাস্তবায়নটি ব্যবহার করছেন এবং এটির মতো একই মেমরি লেআউট রয়েছে তার উপর গ্রন্থাগারগুলির লেখকদের কোনও নিয়ন্ত্রণ নেই ।

std::stringএটি একটি টেম্পলেট, সুতরাং এটির প্রয়োগটি আপনার স্থানীয় এসটিএল শিরোনাম থেকে নেওয়া হয়েছে। এখন কল্পনা করুন যে আপনি স্থানীয়ভাবে কিছু পারফরম্যান্স-অনুকূলিত এসটিএল সংস্করণ ব্যবহার করছেন, এটি মানের সাথে সম্পূর্ণ সুসংগত। উদাহরণস্বরূপ, আপনি std::stringগতিশীল বরাদ্দ এবং ক্যাশে মিসের সংখ্যা হ্রাস করতে প্রতিটিটিতে স্ট্যাটিক বাফারকে প্রবেশ করতে পছন্দ করেছেন chosen ফলস্বরূপ, মেমরি বিন্যাস এবং / বা আপনার প্রয়োগের আকার লাইব্রেরির চেয়ে আলাদা is

যদি কেবল বিন্যাসটি আলাদা std::stringহয় তবে গ্রাহকগণের কাছে লাইব্রেরি থেকে পাঠানো উদাহরণগুলিতে কিছু সদস্য ফাংশন কলগুলি বা অন্য কোনও উপায়ে ব্যর্থ হতে পারে, তার উপর নির্ভর করে কোন সদস্য স্থানান্তরিত হয়েছিল।

যদি std::stringআকারটিও আলাদা হয় তবে লাইব্রেরিতে এবং ক্লায়েন্ট কোডটিতে যাচাই করা হলে সদস্য থাকা সমস্ত লাইব্রেরির ধরণগুলি বিভিন্ন আকারের আকার ধারণ করবে। সদস্যগণের নিম্নলিখিত সদস্যদের std::stringঅফসেটগুলিও স্থানান্তরিত হবে এবং গ্রাহকের কাছ থেকে ডাকা যে কোনও সরাসরি অ্যাক্সেস / ইনলাইন অ্যাক্সেসরটি লাইব্রেরীতে নিজেই ডিবাগ করার সময় "ঠিক আছে" দেখা সত্ত্বেও আবর্জনা ফিরবে।

বটমলাইন - যদি গ্রন্থাগার এবং ক্লায়েন্ট কোডগুলি আবার বিভিন্ন std::stringসংস্করণ সংকলিত হয় তবে তারা ঠিক সূক্ষ্মভাবে লিঙ্ক করবে, তবে এর ফলে কিছু বাজে, বাগগুলি বোঝা শক্ত হতে পারে। আপনি যদি নিজের std::stringপ্রয়োগ পরিবর্তন করেন তবে এসটিএল থেকে প্রকাশিত সমস্ত লাইব্রেরি ক্লায়েন্টের std::stringবিন্যাসের সাথে মেলে পুনরায় সংযুক্ত করতে হবে । এবং প্রোগ্রামাররা তাদের লাইব্রেরিগুলি শক্তিশালী হতে চায় বলে আপনি খুব কমই std::stringকোথাও উন্মুক্ত দেখতে পাবেন ।

ন্যায়সঙ্গত হওয়ার জন্য, এটি সমস্ত এসটিএল ধরণের ক্ষেত্রে প্রযোজ্য। আইআইআরসি তাদের স্ট্যান্ডার্ডাইজ মেমরি লেআউট নেই।


2
আপনার অবশ্যই একটি * নিক্স প্রোগ্রামার হতে হবে। সি ++ বাইনারি সামঞ্জস্যতা সমস্ত প্ল্যাটফর্মে সমান নয় এবং বিশেষত উইন্ডোজ কোনও ক্লাসই ডেটা সদস্যযুক্ত ক্লায়ারগুলি সংকলকগুলির মধ্যে বহনযোগ্য।
বেন ভয়েগট

(আমার অর্থ পিওডির প্রকারগুলি ব্যতীত, এবং তারপরেও স্পষ্ট প্যাকিংয়ের প্রয়োজনীয়তা প্রয়োজন)
বেন ভয়েগট

1
ইনপুট জন্য ধন্যবাদ, যদিও আমি বিভিন্ন সংকলক কথা বলছি না, আমি ভিন্ন এসটিএল কথা বলছি।
gwiazdorrr

1
+1: একটি সংকলক সরবরাহ করা শ্রেণীর নিজস্ব সংস্করণ রোল করার জন্য এবিআই একটি বিশাল কারণ। এই একা জন্য, আমি এই গৃহীত উত্তর চাই।
টমাস এডিং

6

প্রশ্নের অনেক উত্তর রয়েছে তবে এখানে কিছু দেওয়া হল:

  1. উত্তরাধিকার। অনেক স্ট্রিং লাইব্রেরি এবং ক্লাসে স্ট্রাইড :: স্ট্রিংয়ের অস্তিত্বের জন্য পিআরআইআর লেখা হয়েছিল।

  2. সি কোডের সাথে সামঞ্জস্যের জন্য লাইব্রেরি std :: স্ট্রিং সি ++ যেখানে অন্যান্য স্ট্রিং লাইব্রেরি রয়েছে যা সি এবং সি ++ এর সাথে কাজ করে।

  3. গতিশীল বরাদ্দ এড়াতে। লাইব্রেরী std :: স্ট্রিংটি গতিশীল বরাদ্দ ব্যবহার করে এবং এম্বেড থাকা সিস্টেমগুলির জন্য, বাধাগ্রস্ত বা রিয়েল-টাইম সম্পর্কিত কোডের জন্য বা নিম্ন-স্তরের কার্যকারিতার জন্য উপযুক্ত নাও হতে পারে।

  4. টেমপ্লেট। লাইব্রেরী std :: স্ট্রিং টেমপ্লেট উপর ভিত্তি করে। মোটামুটি সম্প্রতি অবধি বেশিরভাগ সি ++ সংকলক খুব খারাপভাবে পারফরম্যান্স করেছে এমনকি বগি টেম্পলেট সমর্থনও করেছে। দুর্ভাগ্যক্রমে, আমি এমন একটি শিল্পে কাজ করি যা প্রচুর কাস্টম সরঞ্জাম ব্যবহার করে এবং শিল্পের একটি বড় প্লেয়ারের আমাদের সরঞ্জামচেনগুলির মধ্যে একটি "আনুষ্ঠানিক" 100% সমর্থন করে না সি ++ (বগি স্টাফগুলি টেমপ্লেট এবং আল হিসাবে রয়েছে)।

এছাড়াও সম্ভবত আরও অনেক বৈধ কারণ রয়েছে।


2
"মোটামুটি সাম্প্রতিককালে" অর্থ "এমনকি এক দশক কেটে গেছে এমনকি ভিজ্যুয়াল স্টুডিও তাদের পক্ষে যথেষ্ট যুক্তিসঙ্গত সমর্থন পেয়েছে"?
ডেডএমজি

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

4

এটি বেশিরভাগ ইউনিকোড সম্পর্কে। ইউনিকোডের জন্য স্ট্যান্ডার্ড সমর্থনটি সর্বোত্তমভাবে অস্বাভাবিক এবং প্রত্যেকের নিজস্ব ইউনিকোডের চাহিদা রয়েছে। উদাহরণস্বরূপ, আইসিইউ আপনি যে কোনও ইউনিকোড কার্যকারিতা সমর্থন করতে পারেন তার পক্ষে সমর্থন করেন, জাভা ইন্টারফেসের সবচেয়ে ঘৃণ্য স্বয়ংক্রিয়ভাবে উত্পন্ন জাভা ইন্টারফেসের পিছনে আপনি সম্ভবত কল্পনা করতে পারেন এবং আপনি যদি ইউনিক্স-এ ইউটিএফ -১ 16 এর সাথে আটকে থাকেন তবে আপনার ধারণাটি নাও হতে পারে একটি ভাল সময়.

তদ্ব্যতীত, অনেকের ইউনিকোড সমর্থনের বিভিন্ন স্তরের প্রয়োজন - প্রত্যেকেরই জটিল পাঠ্য বিন্যাসের API এবং এই জাতীয় জিনিসগুলির প্রয়োজন হয় না। সুতরাং এটি কেন সহজেই দেখা যায় যে অসংখ্য স্ট্রিং ক্লাস কেন বিদ্যমান - স্ট্যান্ডার্ডটি চমত্কার স্তন্যপায়ী এবং প্রত্যেকেরই নতুনের থেকে আলাদা আলাদা চাহিদা রয়েছে, কেউ একটি একক শ্রেণি তৈরি করতে পরিচালিত করে না যা একটি আনন্দদায়ক ইন্টারফেসের সাথে প্রচুর ইউনিকোড সমর্থন ক্রস প্ল্যাটফর্ম করতে পারে।

আমার মতে, ইউনিকোডের জন্য সঠিকভাবে সহায়তা না দেওয়ার জন্য এটি বেশিরভাগ সি ++ কমিটির দোষ- 1998 বা 2003-এ সম্ভবত এটি বোধগম্য ছিল তবে সি ++ 11 তে নয়। আশা করি সি ++ 17 এ তারা আরও ভাল করবে।


হ্যালো, সি ++ ২০ এখানে, অনুমান করুন ইউনিকোড সমর্থনের কি হয়েছিল?
পাসার

-4

এটি কারণ প্রতিটি প্রোগ্রামারকে প্রমাণ করার মতো কিছু আছে এবং তাদের দুর্দান্ত, দুর্দান্ত ফাংশনের জন্য তাদের নিজস্ব দুর্দান্ত, দ্রুত স্ট্রিং ক্লাস তৈরি করার প্রয়োজনীয়তা অনুভব করছে। এটি সাধারণত কিছুটা অতিরিক্ত অতিরিক্ত হয় এবং এটি আমার অভিজ্ঞতাতে সমস্ত ধরণের অতিরিক্ত স্ট্রিং রূপান্তর বাড়ে।


7
এটি কি সত্য ছিল আমি জাভা জাতীয় ভাষায় একই ধরণের স্ট্রিং বাস্তবায়ন দেখতে পাব যেখানে একটি ভাল বাস্তবায়ন সবখানে পাওয়া যায়।
বিল কে

@ বিলক জাভা স্ট্রিং চূড়ান্ত, তাই আপনাকে অন্য কোথাও নতুন কার্যকারিতা রাখতে হবে।

আমার বক্তব্যটি, এমনকি চূড়ান্ত হলেও, ২০ বছরে আমি কাউকে কখনও কাস্টম স্ট্রিং নিষেধাজ্ঞার কথা লিখতে দেখিনি (আচ্ছা, আমি স্ট্রিং কনটেন্টেশন পারফরম্যান্সকে উন্নত করার চেষ্টা করেছি তবে দেখা যাচ্ছে যে জাভা আপনার চেয়ে স্ট্রিং + স্ট্রিংয়ের চেয়ে বেশি স্মার্ট) ' d কল্পনা)
বিল কে

2
@ বিল: এটি অন্য সংস্কৃতির সাথে থাকতে পারে। সি ++ তাদের আকর্ষণ করে যারা নিম্ন স্তরের বিশদটি বুঝতে চান। জাভা তাদের আকর্ষণ করে যাঁরা কেবল কারও কারও বিল্ডিং ব্লক ব্যবহার করে কাজটি সম্পন্ন করতে চান। (দ্রষ্টব্য যে এটি যে কোনও নির্দিষ্ট ভাষা ব্যবহারের জন্য বেছে নেওয়া কোনও নির্দিষ্ট ব্যক্তি সম্পর্কে নয়, তবে ভাষাগুলির নিজস্ব নকশার লক্ষ্য এবং সংস্কৃতি সম্পর্কে)
বেন ভয়েগট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.