Allt du behöver veta om strängar i C ++



Den här artikeln ger dig en detaljerad och omfattande kunskap om strängar i C ++ och kommer också att ge exempel på olika operationer.

Termen betyder en ordnad sekvens av tecken. En sekvens av tecken kan representeras med hjälp av ett objekt i en klass i C ++. Klassen som ger en definition för att göra det kallas en strängklass. Strängklass lagrar tecknen som en sekvens av byte med funktionaliteten för att ge åtkomst till enkelbyte-tecknet. I C ++ är de bifogade avgränsarna dubbla citat. I denna artikel 'Strängar i C ++' kommer jag att diskutera följande ämnen:

Strängklass och karaktärsskillnad

Strängklass Character Array
Strängklass är en klass som definierar objekt som kan representeras som en ström av teckenTeckenuppsättning är helt enkelt en uppsättning tecken.
I fallet med strängar tilldelas minnet dynamiskt, så mer minne kan allokeras vid körning på begäranStorleken på teckenuppsättningen måste allokeras statiskt, så mer minne kan inte tilldelas vid körning om så krävs
Strängklass definierar ett antal funktioner som möjliggör mångfaldiga operationer på strängar.Teckenuppsättning erbjuder inte många inbyggda funktioner för att manipulera strängar
Strängar är långsammare jämfört med implementering än teckenmatrisen.Implementering av ett teckenarray är snabbare.

Deklarera och initialisera en sträng i C ++

strings-in-c++Initiering av sträng i C ++ är ganska enkel !. Vi kan använda någon av följande metoder.





med hjälp av namnrymd std sträng std_string

eller

vad alla kan nagios övervaka
std :: sträng std_string
#include using namespace std int main () {char ch [12] = {'H', 'e', ​​'l', 'l', 'o', '', 'b', 'y', '' , 'c', 'h', ''} string st = 'Hello by st' std :: string std_st = 'Hello by std_st' cout<< ch << endl cout << st << endl cout << std_st << endl return 0 }

Produktion:



Hello by ch Hello by st Hello by std_st

I det här exemplet har vi visat både teckenmatrisen (ch) och strängen clinitialiseringsmetoder för ass (st och std_st). Först använde vi teckenuppsättningsmetoden genom att definiera en teckenuppsättning ch [12] som innehåller 12 element och avslutas med ett noll tecken. I den andra delen använde vi en strängklassmetod.

Operationer på strängar i C ++

Fördelen med att använda strängklass är att det finns flera inbyggda funktioner i C ++ för att manipulera dem. Detta gör programmering enkelt och effektivt. Låt oss ta upp vissa viktiga funktioner för strängmanipulation och förstå dem genom att titta på några exempel.

Strängstorlek: Både metoder för storlek () och längd () kan användas för att returnera storleken på objektet.



kosta<< st.length() <

Produktion:

11 11

Strängsammankoppling: Vi kan sammanfoga två eller flera strängar genom att helt enkelt använda + -operatören mellan dem

sträng new_string = st + 'och' + std_st cout<< new_string <

Produktion:

Hej med st och Hej med std_st

Lägga till strängar: Klassmedlemfunktionen .append (sträng) kan användas för att sammanfoga och lägga till en sträng på en specifik karaktärsplats i strängen. Om en programmerare sätter str.append (str1, p, n), betyder det att n antal tecken från position p i sträng str1 läggs till i slutet av str.

string str = 'Jag tycker om att lära' string str1 = 'Python, C ++ eller C' str. append (str1, 8, 3) cout<< str << endl

Produktion:

Jag tycker om att lära mig C ++

Söker strängar: Vi kan använda find () medlemsfunktionen för att hitta den första förekomsten av en sträng i en annan. find () letar efter strängnål inuti sträng höstack från position pos och returnerar positionen för den första förekomsten av nålen. Funktionen rfind () fungerar på samma sätt, förutom att den returnerar den sista förekomsten av den skickade strängen.

string haystack = 'Hello World!' strängnål = 'o' cout<< haystack.find(needle)<

Produktion:

4 4 7 4294967295

Det första cout-kommandot skriver helt enkelt ut '4' vilket är indexet för den första förekomsten av 'o' i höstacksträngen. Om vi ​​vill ha 'o' i 'Värld' måste vi ändra 'pos' för att peka förbi den första förekomsten. haystack.find (nål, 4) skulle återigen returnera 4, medan haystack.find (nål, 5) skulle ge 7. Om understrängen inte hittas, hittar () returnerar std :: sträng :: npos.

Npos är ett specialvärde som är lika med det maximala värdet som kan representeras av typen size_type. Här är det 4294967295. I allmänhet används den antingen som slutet på strängindikatorn av de funktioner som förväntar sig ett strängindex eller som felindikator av de funktioner som returnerar ett strängindex.

Denna enkla kod söker i en sträng för alla förekomster av “C ++” i str2 och skriver ut deras positioner:

string str2 = 'C ++ är ett objektorienterat programmeringsspråk och inkluderar klasser, arv, polymorfism, dataabstraktion och inkapsling. C ++ tillåter undantagshantering och funktionsöverbelastning som inte är möjliga i C.C ++ är ett kraftfullt, effektivt och snabbt språk. '' för (sträng :: storlek_typ i = 0, tfind (tfind = wikistr.find ('C ++', i))! = sträng :: npos i = tfind + 1) {std :: cout<< 'Found occurrence of 'C++' at position ' << tfind << std::endl }

Produktion:

vad gör .trim i java
Hittad förekomst av 'C ++' vid position 0 Hittad förekomst av 'C ++' vid position 132 Hittad förekomst av 'C ++' vid position 217
#include using namespace std class base {public: void fun_1 () {cout<< 'base class function 1n' } virtual void fun_2() { cout << 'base class function 2n' } virtual void fun_3() { cout << 'base class function 3n' } virtual void fun_4() { cout << 'base class function 4n' } } class derived : public base { public: void fun_1() { cout << 'derived class function 1n' } void fun_2() { cout << 'derived class function 2n' } void fun_4(int x) { cout fun_2 () // Senbindning (RTP) ptr-> fun_3 () // Senbindning (RTP) ptr-> fun_4 () // Tidig bindning men denna funktionsanrop är // olaglig (ger fel) eftersom pekaren // är av bastyp och funktion är av // härledd klass // p-> fun_4 (5)}

Produktion:

basklassfunktion 1 härledd klassfunktion 2 basklassfunktion 3 basklassfunktion 4

Med detta kommer vi till ett slut på den här artikeln om strängar i C ++. Jag hoppas att du fick förståelse för de olika operationerna som kan utföras på den. Om du vill lära dig mer, kolla in Java Training av Edureka, ett pålitligt online-lärande företag. Edureka's utbildning och certifieringskurs är utformad för att träna dig för både kärn- och avancerade Java-koncept tillsammans med olika Java-ramverk som Hibernate & Spring.

Har du en fråga till oss? Vänligen nämna det i kommentarsektionen på den här bloggen så kommer vi tillbaka till dig så snart som möjligt.