string library (tsz. string libraries)
<string>
fejlécfájl) lehetővé teszi szöveges adatok hatékony kezelését. Az alábbiakban részletesen bemutatom a fontosabb aspektusait.
A C++ std::string osztályát az <string>
fejlécfájl tartalmazza. Ez egy dinamikus karakterlánc-osztály, amely megkönnyíti a szövegek kezelését a nullával lezárt C-s karaktertömbökhöz (char
) képest.
#include <iostream>
#include <string>
int main() {
std::string szoveg = "Hello, világ!";
std::cout << szoveg << std::endl;
return 0;
}
A std::string
többféleképpen inicializálható:
std::string ures; // Üres string
std::string szoveg = "alma"; // Literállal
std::string masik(szoveg); // Másik stringgel
std::string ism("aaaa", 2); // "aa" (csak az első 2 karakter)
std::string ismet(5, 'x'); // "xxxxx" (5 darab 'x' karakter)
+
és +=
)std::string s1 = "Hello";
std::string s2 = " világ!";
std::string s3 = s1 + s2; // "Hello világ!"
s1 += " C++"; // "Hello C++"
std::string s = "Hello";
std::cout << s.size() << std::endl; // 5
std::cout << s.length() << std::endl; // 5 (size() és length() ugyanaz)
if (s.empty()) {
std::cout << "Üres string" << std::endl;
}
char elso = s; // 'H'
char masodik = s.at(1); // 'e'
s = 'h'; // "hello"
substr()
)std::string s = "Hello világ";
std::string sub = s.substr(6, 5); // "világ"
insert()
)std::string s = "világ";
s.insert(0, "Hello "); // "Hello világ"
erase()
)std::string s = "Hello világ";
s.erase(5, 6); // "Hello"
replace()
)std::string s = "Hello világ";
s.replace(6, 5, "C++"); // "Hello C++"
find()
)std::string s = "Alma korte banan";
size_t pos = s.find("korte");
if (pos != std::string::npos) {
std::cout << "Megtalálható a(z) " << pos << ". pozíción." << std::endl;
}
rfind()
)size_t pos = s.rfind("banan"); // Jobbról balra keres
starts_with()
) - C++20if (s.starts_with("Alma")) {
std::cout << "Az 's' 'Alma'-val kezdődik." << std::endl;
}
ends_with()
) - C++20if (s.ends_with("banan")) {
std::cout << "Az 's' 'banan'-nal végződik." << std::endl;
}
stoi
, stof
, stod
)std::string s = "123";
int szam = std::stoi(s); // 123
std::to_string
)int x = 42;
std::string s = std::to_string(x); // "42"
if (s1 == s2) {
std::cout << "Egyenlőek" << std::endl;
}
compare()
)if (s1.compare(s2) < 0) {
std::cout << "s1 kisebb, mint s2" << std::endl;
}
c_str()
és data()
std::string s = "Hello";
const char* cstr = s.c_str(); // Nullával lezárt C-s karaktertömb
const char* cstr = "Hello";
std::string s = cstr;
std::stringstream
)A std::stringstream
segít a stringekkel végzett műveletekben.
#include <sstream>
std::stringstream ss;
ss << "Érték: " << 42;
std::string eredmeny = ss.str(); // "Érték: 42"
#include <algorithm>
#include <cctype>
std::string trim(const std::string& s) {
size_t start = s.find_first_not_of(" \t\n");
size_t end = s.find_last_not_of(" \t\n");
return (start == std::string::npos) ? "" : s.substr(start, end - start + 1);
}
#include <iostream>
#include <sstream>
#include <map>
int main() {
std::string szoveg = "alma korte alma banan alma";
std::stringstream ss(szoveg);
std::string szo;
std::map<std::string, int> szamlalo;
while (ss >> szo) {
szamlalo++;
}
for (const auto& : szamlalo) {
std::cout << kulcs << ": " << ertek << std::endl;
}
}
Kimenet:
alma: 3 banan: 1 korte: 1
A std::string
egy erőteljes, dinamikus eszköz a szövegkezelésre C++-ban. Az alapműveleteken kívül lehetőséget nyújt keresésre, módosításra, konvertálásra és stream-kezelésre is. Az újabb C++ verziók (pl. C++20) további kényelmi funkciókkal bővítették.