কম্পিউটার টিউটোরিয়াল

C/C++-এ নাল-টার্মিনেটেড স্ট্রিং কী?

C-তে স্ট্রিং হলো ক্যারেক্টার অ্যারে যার শেষে একটি নাল ক্যারেক্টার ('\0' বা 0) থাকে। এটি স্ট্রিংয়ের শেষ বোঝাতে কাজ করে। C++-তে std::string এটি আরও উন্নত করেছে (সাইজ স্টোর করে, নাল টার্মিনেটর ও রাখে)।

নাল-টার্মিনেটেড স্ট্রিং

  • ক্যারেক্টার সিকোয়েন্স + শেষে '\0'।
  • ডাবল কোটে লিখলে ("text") কম্পাইলার অটোমেটিক '\0' যোগ করে।
  • সাইজ = ক্যারেক্টার কাউন্ট + ১ (নালের জন্য)।
  • strlen() নাল পাওয়া পর্যন্ত কাউন্ট করে।

উদাহরণ: মাঝপথে নাল ক্যারেক্টার

#include <iostream>
#include <string>
using namespace std;

int main() {
    string my_string = "This is a sample text";
    cout << my_string << endl; // পুরো প্রিন্ট

    my_string = "This is a sam\0ple text"; // মাঝপথে \0
    cout << my_string; // "This is a sam" পর্যন্ত প্রিন্ট হবে
    return 0;
}

আউটপুট

This is a sample text
This is a sam

C-স্টাইল vs C++ std::string

বিষয়C-স্টাইল (char[])C++ std::string
নাল টার্মিনেটরবাধ্যতামূলকরাখে (c_str() দিয়ে), কিন্তু সাইজ আলাদা ট্র্যাক করে
লেথ জানাO(n) - strlen()O(1) - size()
বাফার ওভারফ্লো রিস্কউচ্চ (strcpy, strcat)নিম্ন (বাউন্ড চেক, এক্সপেন্ডেবল)
এমবেডেড নালসম্ভব নয় (স্ট্রিং এন্ড মনে হয়)সম্ভব (size() জানা থাকে)

সেরা অনুশীলন: আধুনিক C++-এ std::string বা std::string_view ব্যবহার করুন। C API কল করার সময় .c_str() দিয়ে নাল-টার্মিনেটেড পয়েন্টার পান।

  1. C++-এ স্ট্রিং লিটারেল (String Literal) কী?

  2. লিনাক্সে C++-এর জন্য সেরা IDE কী?

  3. লিনাক্সে C++-এর জন্য সেরা IDE কী? (আলাদা লেখা)

  4. উইন্ডোজে C++-এর জন্য সেরা IDE কী? (আলাদা লেখা)