STL
std::string Deep Dive
STL Ka String Class
💡 std::string ek Swiss Army knife hai — C ke char array (bare-hands) ki jagah, ek ready-made toolkit deta hai: length nikalna, substring nikalna, search karna, sab built-in methods se, koi manual loop nahi.
std::string (header <string>) C ke char array + string.h functions ka combined, object-oriented upgrade hai. Dynamic size, operator overloading (+, ==, <), aur bahut saare methods (.length(), .substr(), .find(), .replace()) built-in milte hain.
#include <string>
using namespace std;
int main() {
string s = "Hello, World!";
cout << s.length() << endl; // 13
cout << s.substr(7, 5) << endl; // "World"
cout << s.find("World") << endl; // 7 (index)
s += " Bye!";
cout << s << endl; // "Hello, World! Bye!"
if (s.find("xyz") == string::npos) { // npos = "not found" marker
cout << "xyz nahi mila" << endl;
}
return 0;
}🔤
std::string ek Swiss Army knife hai — C ke char array (bare-hands) ki jagah, ek ready-made toolkit deta hai: length nikalna, substring nikalna, search karna, sab built-in methods se, koi manual loop nahi.
1 / 2
⚡ झट से Recap
- std::string = C ke char array + string.h ka OOP upgrade
- .substr(), .find(), .replace() jaise built-in methods
- "Not found" ke liye string::npos check karo, 0/-1 nahi
इस page में (2 subtopics)
Loop mein baar-baar += se string banate waqt, string internally resize hoti rehti hai — usually amortized O(1) hai (vector jaisi hi growth strategy), lekin bade strings ke liye reserve() se pehle se capacity allocate karna performance improve kar sakta hai.
string result;
result.reserve(1000); // agar approximate final size pata hai
for (int i = 0; i < 100; i++) {
result += "x";
}
cout << result.length() << endl; // 100Tip: stringstream (header <sstream>) bhi ek common tareeka hai efficiently strings build karne ka, especially jab numbers ko strings mein convert karke concatenate karna ho.
to_string(num) kisi bhi number ko string mein convert karta hai. stoi()/stod()/stof() (string to int/double/float) ulta kaam karte hain — string se number nikalte hain.
int num = 42;
string s = to_string(num); // "42"
string input = "123";
int parsed = stoi(input); // 123 (int)
string decimal = "3.14";
double d = stod(decimal); // 3.14 (double)Tip: stoi() invalid input (jaise "abc") par exception throw karta hai — agar user input parse kar rahe ho, try-catch mein wrap karna best practice hai (exception handling, aage seekhenge).