🔤
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
⚡ Quick 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
Is page mein (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;  // 100
💡Tip: 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).