C++ Sztringfüggvény: strcpy(), strcat(), strlen(), strcmp()

⚡ Okos összefoglaló

C++ A strcpy, strcat, strlen és strcmp karakterláncfüggvények lehetővé teszik a programok számára szöveg másolását, illesztését, mérését és összehasonlítását. Ez az anyag elmagyarázza, mi a karakterlánc, hogyan deklarálhatunk C stílusú és std::string karakterláncokat, hogyan érhetjük el az értékeiket, és hogyan alkalmazhatjuk az alapvető karakterláncfüggvényeket példákkal illusztrálva.

  • 🔤 Alapvető definíció: A karakterlánc karakterek sorozata; C++ A string az std::string osztály objektuma.
  • 🧱 Két nyilatkozat: C++ támogatja a '\0'-val lezárt C stílusú karaktertömböket és a biztonságosabb std::string osztálytípust.
  • 📥 Értékek elérése: A karakterláncok név szerint olvashatók és nyomtathatók ki, ezt mind char tömbökkel, mind std::stringgel demonstráljuk.
  • 🇧🇷 Sztringfüggvények: Az strcpy másolja, az strcat összefűzi, az strlen méri a hosszát, az strcmp pedig összehasonlít két karakterláncot.
  • 📦 Kötelező fejléc: A C karakterláncfüggvények a cstring fejlécben találhatók, amelyet használat előtt meg kell adni.

C++ Húrfüggvények

Mi az a karakterlánc?

A karakterlánc karaktersorozat. A C++ A string az std::string osztály objektuma. A karakterek bájtsorozatokként vannak tárolva, és egyetlen karakterbájthoz lehet hozzáférni.

C++ A karakterláncok dinamikusan foglalják le a memóriát. Szükség esetén futásidőben több memória foglalható le a karakterlánc számára. Mivel nincs előzetes memóriafoglalás, nincs memóriapazarlás. A karakterláncokon különféle műveleteket végezhetünk, beleértve az összehasonlítást, összefűzést, konverziót stb.

Karakterláncok deklarálása

C++ kétféle karakterlánc deklarációt támogat:

  • C-stílusú karakterlánc
  • String osztály típusa

C-stílusú karakterlánc

Ezt a fajta karakterlánc-deklarációt a ... vezette be. C programozási nyelv. C++ továbbra is támogatja. Ez egyszerűen egy egydimenziós karaktertömb, amelyet egy null karakter (\0) zár le. Egy null-végződésű karakterlánc a karakterláncot alkotó karaktereket tartalmazza, amelyeket egy null követ.

Tekintsük az alábbi karakterlánc deklarációt:

char name[5] = {'J', 'o', 'h', 'n', '\0'};

A fenti deklaráció egy karakterláncot hoz létre, amely a John szót alkotja. A szó 4 karakterből áll, de a karakterlánc mérete 5. A plusz szóköz lehetővé teszi a null karakter tárolását.

A tömb inicializálási szabályával a fenti utasítást a következőképpen írhatjuk fel:

char name[] = "John";

Megjegyzendő, hogy nem kell a null karaktert a karakterlánc-konstans végére helyezni. A C++ A fordító automatikusan a '\0'-t a karakterlánc végére helyezi a tömb inicializálása során.

std::string

A szabvány C++ A könyvtár biztosítja a string osztályt, amely különféle karakterlánc-műveleteket támogat. std::string formátumban íródik.

A használatához először be kell illesztenünk a munkaterületünkbe az #include előfeldolgozó használatával, az alábbiak szerint:

#include <string>

Ezután deklarálhatjuk a karakterláncunkat a string kulcsszó használatával. Például:

string name = "John";

A fenti utasítás egy név nevű karakterláncot hoz létre, amely tartalmazza a János értéket.

A karakterlánc értékek elérése

In C++, a karakterlánc nevével érhetjük el a karakterlánc értékeit. Például:

#include <iostream>
using namespace std;
int main() {
	char name[5] = { 'J', 'o', 'h', 'n', '\0' };
	cout << "String value is: ";
	cout << name << endl;
	return 0;
}

output:

A karakterlánc értékek elérése

Itt van egy képernyőkép a kódról:

A karakterlánc értékek elérése

Code Magyarázat:

  1. Az iostream fejlécfájl belefoglalása a kódunkba. Lehetővé teszi számunkra, hogy olvassunk a konzolról és írjunk oda.
  2. Beleértve az std névteret, hogy az osztályait és függvényeit hívás nélkül használhassuk.
  3. A main() függvény meghívása, amelyen belül a program logikáját hozzá kell adni. A { a main() függvény törzsének kezdetét jelöli.
  4. Karakterlánc deklarálása és a név megadása. A karakterlánc tárolja a János értéket. Az extra szóköz a null karaktert tárolja.
  5. Szöveg nyomtatása a konzolon.
  6. A név nevű karakterlánc értékének kinyomtatása a konzolon.
  7. A main() függvénynek értéket kell visszaadnia, ha a program jól fut.
  8. A main() függvény törzsének vége.

Itt van egy másik példa a C++ szabványos karakterlánc osztály:

#include <iostream>
#include <string>
using namespace std;
int main() {

	string name = "Guru99";

	cout << "The name is : " << name << endl;

	return 0;
}

output:

A karakterlánc értékek elérése

Itt van egy képernyőkép a kódról:

A karakterlánc értékek elérése

Code Magyarázat:

  1. Az iostream fejlécfájl belefoglalása a kódunkba. Lehetővé teszi számunkra, hogy olvassunk a konzolról és írjunk oda.
  2. Beleértve a szabványos karakterlánc osztályt a kódunkba.
  3. Beleértve az std névteret, hogy az osztályait és függvényeit hívás nélkül használhassuk.
  4. A main() függvény meghívása, amelyen belül a program logikáját hozzá kell adni. A { a main() függvény törzsének kezdetét jelöli.
  5. Egy karakterlánc deklarálása és a név név megadása. A karakterlánc tárolja az értéket Guru99.
  6. A karakterlánc nevének értékének kinyomtatása néhány szöveg mellett a konzolon.
  7. A main() függvénynek értéket kell visszaadnia, ha a program jól fut.
  8. A main() függvény törzsének vége.

String funkciók be C++

Gyakran szeretnéd manipulálni a karakterláncokat. C++ számos függvényt kínál, amelyeket ehhez használhat. Ezek a függvények a fejléc, ezért be kell illesztenünk a kódunkba a függvények használatához. Beszéljünk néhányról:

strcpy()

Ez a karakterlánc másolás funkciója. Az egyik karakterláncot egy másik karakterláncba másolja.

Syntax:

strcpy(string1, string2);

A függvény két paramétere, a string1 és a string2, karakterláncok. A függvény a string2 karakterláncot a string1-be másolja.

strcat()

Ez a karakterlánc-összefűzési függvény. Összefűzi a karakterláncokat.

Syntax:

strcat(string1, string2);

A függvény két paramétere, a string1 és a string2, az összefűzendő karakterláncok. A fenti függvény a string2 karakterláncot a string1 karakterlánc végéhez fogja fűzni.

strlen()

Ez a karakterlánchossz függvény. Az argumentumként átadott karakterlánc hosszát adja vissza.

Syntax:

strlen(string1);

A string1 paraméter annak a karakterláncnak a neve, amelynek hosszát meg kell határozni. A fenti függvény a string1 hosszát adja vissza.

strcmp ()

Ez a karakterlánc-összehasonlító függvény. A karakterláncok összehasonlítására használják.

Syntax:

strcmp(string1, string2);

A fenti függvény 0 értéket ad vissza, ha a string1 és string2 karakterláncok hasonlóak, kisebbet, mint 0, ha string1 < string2, és nagyobbat, mint 0, ha string1 > string2.

Példa:

A következő példa bemutatja a fenti karakterlánc-függvények használatát:

#include <iostream>
#include <cstring>
using namespace std;
int main() {

	char name1[10] = "Guru99";
	char name2[10] = "John";
	char name3[10];

	int len;
	strcpy(name3, name1);
	cout << "strcpy( name3, name1) : " << name3 << endl;

	strcat(name1, name2);
	cout << "strcat( name1, name2): " << name1 << endl;

	len = strlen(name1);
	cout << "strlen(name1) : " << len << endl;
	return 0;
}

output:

String funkciók be C++

Itt van egy képernyőkép a kódról:

String funkciók be C++

Code Magyarázat:

  1. Az iostream fejlécfájl belefoglalása a kódunkba. Lehetővé teszi számunkra, hogy olvassunk a konzolról és írjunk oda.
  2. Beleértve a szabványt is fejléc a kódunkban.
  3. Beleértve az std névteret, hogy az osztályait és függvényeit hívás nélkül használhassuk.
  4. A main() függvény meghívása, amelyen belül a program logikáját hozzá kell adni. A { a main() függvény törzsének kezdetét jelöli.
  5. Egy 10 karakterből álló karakterlánc deklarálása és a név1 név megadása. A karakterlánc tárolja az értéket Guru99.
  6. 10 karakterből álló karakterlánc deklarálása és a név megadása2. A karakterlánc tárolja a János értéket.
  7. 10 karakteres karakterlánc deklarálása és a név megadása3.
  8. Kijelentve egy egész szám változó len nevű.
  9. A string name1 másolása a string name3-ba.
  10. A name3 karakterlánc értékének kiírása szöveg mellett a konzolon. Ki kell nyomtatnia Guru99.
  11. A név2 karakterláncot a név1 karakterlánc végéhez fűzzük. A név1 értéke most már Guru99 János.
  12. A name1 karakterlánc értékének kiírása szöveg mellett a konzolon. Ki kell nyomtatnia Guru99 János.
  13. A név1 nevű karakterlánc hosszának meghatározása és a length értékének hozzárendelése a len változóhoz.
  14. A len változó értékének kinyomtatása más szöveggel együtt a konzolon.
  15. A main() függvénynek értéket kell visszaadnia, ha a program jól fut.
  16. A main() függvény törzsének vége.

GYIK

Igen. A mesterséges intelligencia asszisztensek képesek karaktertömböket std::string formátumba átstrukturálni, frissíteni a kapcsolódó függvényeket, és elmagyarázni a biztonsági előnyöket. A fejlesztőknek továbbra is át kell tekinteniük a változtatásokat a peremhelyzetek, a pufferméretek és a tervezett viselkedés tekintetében.

Igen. A mesterséges intelligencia eszközei működő példákat generálnak, elmagyarázzák az strcpy és az strcat viselkedését, és jelzik a puffertúlcsordulás kockázatait. Ez felgyorsítja a megértést, de a kód saját kezű futtatása továbbra is a legjobb módja a viselkedés megerősítésének.

Az std::string dinamikusan kezeli a memóriát, és beépített műveleteket biztosít, mint például az összefűzés és az összehasonlítás. A C stílusú karakterláncok fix karaktertömbök, amelyeket '\0' zár le, és manuális memóriakezelést igényelnek, valamint hibalehetőségesebbek.

Puffer túlcsordulást okozhatnak, ha a cél tömb túl kicsi. Biztonságosabb alternatívák közé tartozik az strncpy, az strncat, vagy egyszerűen az std::string műveletek használata, amelyek automatikusan kezelik a memóriát és csökkentik ezeket a kockázatokat.

Foglald össze ezt a bejegyzést a következőképpen: