পদ্ধতি ১: ম্যানুয়াল কপি (C-স্টাইল)
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char src[] = "Tutorialspoint";
char dest[50];
int i = 0;
for (; src[i] != '\0'; i++)
dest[i] = src[i];
dest[i] = '\0'; // Null terminator
cout << dest << "\n";
return 0;
}
পদ্ধতি ২: `strcpy()` ব্যবহার করে
#include <iostream>
#include <cstring>
#include <string>
using namespace std;
int main() {
string str = "Tutorialspoint";
char dest[str.size() + 1];
strcpy(dest, str.c_str());
cout << dest << "\n";
return 0;
}
পদ্ধতি ৩: `std::string::copy()` ব্যবহার করে (C++ স্টাইল)
#include <iostream>
#include <string>
using namespace std;
int main() {
string str = "Tutorialspoint";
char dest[str.size() + 1];
str.copy(dest, str.size());
dest[str.size()] = '\0'; // Manual null termination
cout << dest << "\n";
return 0;
}
আউটপুট (সব পদ্ধতির জন্য)
Tutorialspoint
তুলনা ও সুপারিশ
| পদ্ধতি | সুবিধা | ব্যবহার ক্ষেত্র |
| ম্যানুয়াল লুপ | নিম্নস্তরের কন্ট্রোল, কোনো লাইব্রেরি লাগে না | এমবেডেড, লার্নিং |
| `strcpy()` | সিম্পল, C-কম্প্যাটিবল | লিগেসি কোড, C ইন্টারফেস |
| `string::copy()` | C++ স্ট্যান্ডার্ড, এক্সসেপশন সেফ | মডার্ন C++ (সুপারিশ করা) |
গুরুত্বপূর্ণ নোট
- সবসময় ডেস্টিনেশন বাফারের সাইজ `str.size() + 1` রাখুন (null terminator-এর জন্য)।
- `c_str()` null-terminated স্ট্রিং রিটার্ন করে, `data()` (C++11+) নাল-টার্মিনেটেড নাও হতে পারে।
- বফার ওভারফ্লো এড়াতে `strncpy` বা `copy` এর লেন্থ প্যারামিটার ব্যবহার করুন।