C++-strenge er sekvenser af tegn gemt i et char-array. Strings bruges til at gemme ord og tekst. De bruges også til at gemme data, såsom numre og andre typer information. Strings i C++ kan defineres enten ved hjælp af std::streng klasse eller den C-stil karakter arrays.

1. C Style Strings
Disse strenge er gemt som den almindelige gamle række af tegn, der afsluttes af en nultegn ' ' . De er den type strenge, som C++ har arvet fra C-sproget.
Syntaks:
char str[] = 'techcodeview.com';>
Eksempel:
C++
// C++ Program to demonstrate strings> #include> using> namespace> std;> int> main()> {> >char> s[] =>'techcodeview.com'>;> >cout << s << endl;> >return> 0;> }> |
>
>Produktion
techcodeview.com>
2. std::string Klasse
Dette er de nye typer strenge, der introduceres i C++ som std::string-klasse defineret i header-filen. Dette giver mange fordele i forhold til konventionelle C-stil strenge såsom dynamisk størrelse, medlemsfunktioner osv.
Syntaks:
std::string str('techcodeview.com');> Eksempel:
C++
// C++ program to create std::string objects> #include> using> namespace> std;> int> main()> {> >string str(>'techcodeview.com'>);> >cout << str;> >return> 0;> }> |
>
>Produktion
techcodeview.com>
Endnu en måde, hvorpå vi kan lave strenge, der har den samme karakter, der gentages igen og igen.
Syntaks:
std::string str(number,character);>
Eksempel:
C++
#include> using> namespace> std;> int> main()> {> >string str(5,>'g'>);> >cout << str;> >return> 0;> }> |
>
>
Produktion:
ggggg>
Måder at definere en streng i C++
Strings kan defineres på flere måder i C++. Strings kan tilgås fra standardbiblioteket ved hjælp af strengklassen. Tegnarrays kan også bruges til at definere strenge. String giver et rigt sæt funktioner, såsom søgning og manipulation, som er almindeligt anvendte metoder. På trods af at den er mindre avanceret end strengklassen, er denne metode stadig meget brugt, da den er mere effektiv og nemmere at bruge. Måder at definere en streng i C++ er:
- Brug af streng nøgleord
- Brug af strenge i C-stil
1. Brug af streng Nøgleord
Det er mere praktisk at definere en streng med nøgleordet streng i stedet for at bruge matrixnøgleordet, fordi det er nemt at skrive og forstå.
Syntaks:
string s = 'techcodeview.com'; string s('techcodeview.com');> Eksempel:
C++
// C++ Program to demonstrate use of string keyword> #include> using> namespace> std;> int> main()> {> >string s =>'techcodeview.com'>;> >string str(>'techcodeview.com'>);> >cout <<>'s = '> << s << endl;> >cout <<>'str = '> << str << endl;> >return> 0;> }> |
>
>Produktion
s = techcodeview.com str = techcodeview.com>
2. Brug af strenge i C-stil
Brug af C-stil strengbiblioteksfunktioner såsom strcpy(), strcmp() og strcat() til at definere strenge. Denne metode er mere kompleks og ikke så udbredt som de to andre, men den kan være nyttig, når du har at gøre med ældre kode, eller når du har brug for ydeevne.
char s[] = {'g', 'f', 'g', ' '}; char s[4] = {'g', 'f', 'g', ' '}; char s[4] = 'gfg'; char s[] = 'gfg';> Eksempel:
C++
// C++ Program to demonstrate C-style string declaration> #include> using> namespace> std;> int> main()> {> >char> s1[] = {>'g'>,>'f'>,>'g'>,>' '> };> >char> s2[4] = {>'g'>,>'f'>,>'g'>,>' '> };> >char> s3[4] =>'gfg'>;> >char> s4[] =>'gfg'>;> >cout <<>'s1 = '> << s1 << endl;> >cout <<>'s2 = '> << s2 << endl;> >cout <<>'s3 = '> << s3 << endl;> >cout <<>'s4 = '> << s4 << endl;> >return> 0;> }> |
>
>Produktion
s1 = gfg s2 = gfg s3 = gfg s4 = gfg>
Et andet eksempel på C-stil streng:
C++
#include> using> namespace> std;> int> main()> {> >string S =>'Geeeks for Geeks'>;> >cout <<>'Your string is= '>;> >cout << S << endl;> >return> 0;> }> |
>
>Produktion
Your string is= Geeeks for Geeks>
Sådan tager du strenginput i C++
Strenginput betyder at acceptere en streng fra en bruger. I C++. Vi har forskellige typer af input fra brugeren, som afhænger af strengen. Den mest almindelige måde er at tage input med spise nøgleord med ekstraktionsoperatoren (>>) i C++. Metoder til at tage en streng som input er:
- spise
- getline
- strengstrøm
1. Brug af Cin
Den enkleste måde at tage strenginput på er at bruge spise kommando sammen med strømudvindingsoperatøren (>>).
Syntaks:
cin>>s;>
Eksempel:
C++
postorder traversering af binært træ
// C++ Program to demonstrate string input using cin> #include> using> namespace> std;> int> main() {> >string s;> > >cout<<>'Enter String'>< cin>>s; cout<<'String is: '< return 0; }> |
>
>Produktion
Enter String String is:>
Produktion:
Enter String techcodeview.com String is: techcodeview.com>
2. Brug af getline
Det getline() funktion i C++ bruges til at læse en streng fra en inputstrøm. Det er deklareret i header-filen.
Syntaks:
getline(cin,s);>
Eksempel:
C++
hashmap java
// C++ Program to demonstrate use of getline function> #include> using> namespace> std;> int> main()> {> >string s;> >cout <<>'Enter String'> << endl;> >getline(cin, s);> >cout <<>'String is: '> << s << endl;> >return> 0;> }> |
>
>Produktion
Enter String String is:>
Produktion:
Enter String techcodeview.com String is: techcodeview.com>
3. Brug af stringstream
Det stringstream klasse i C++ bruges til at tage flere strenge som input på én gang.
Syntaks:
stringstream stringstream_object(string_name);>
Eksempel:
C++
// C++ Program to demonstrate use of stringstream object> #include> #include> #include> using> namespace> std;> int> main()> {> >string s =>' techcodeview.com to the Moon '>;> >stringstream obj(s);> >// string to store words individually> >string temp;> >//>> vil operatøren læse fra stringstream-objektet> >while> (obj>> temp) {> >cout << temp << endl;> >}> >return> 0;> }> |
>
>Produktion
techcodeview.com to the Moon>
Hvordan overfører man strenge til funktioner?
På samme måde som vi sender et array til en funktion, kan strenge i C++ videregives til funktioner som karakterarrays. Her er et eksempel på et program:
Eksempel:
C++
// C++ Program to print string using function> #include> using> namespace> std;> void> print_string(string s)> {> >cout <<>'Passed String is: '> << s << endl;> >return>;> }> int> main()> {> >string s =>'techcodeview.com'>;> >print_string(s);> >return> 0;> }> |
>
>Produktion
Passed String is: techcodeview.com>
Pointere og strenge
Pointere i C++ er symbolske repræsentationer af adresser. De gør det muligt for programmer at simulere call-by-reference samt at skabe og manipulere dynamiske datastrukturer. Ved at bruge pointere kan vi få det første tegn i strengen, som er startadressen på strengen. Som vist nedenfor, kan den givne streng tilgås og udskrives gennem pointerne.
Eksempel:
C++
// C++ Program to print string using pointers> #include> using> namespace> std;> int> main()> {> >string s =>'Geeksforgeeks'>;> >// pointer variable declared to store the starting> >// address of the string> >char>* p = &s[0];> >// this loop will execute and print the character till> >// the character value is null this loop will execute and> >// print the characters> >while> (*p !=>' '>) {> >cout << *p;> >p++;> >}> >cout << endl;> >return> 0;> }> |
>
>Produktion
Geeksforgeeks>
Forskel mellem String og Character array i C++
Den største forskel mellem en streng og en karakterarray er, at strenge er uforanderlige, mens karakterarrays ikke er det.
| Snor | Karakter Array |
|---|---|
| Strings definerer objekter, der kan repræsenteres som strengstrømme. | Null-tegnet afslutter en karakterarray af tegn. |
| Der forekommer intet array-forfald i strenge, da strenge er repræsenteret som objekter. | Truslen om matrix henfald er til stede i tilfældet med tegnarrayet |
| En strengklasse giver adskillige funktioner til at manipulere strenge. | Tegnarrays tilbyder ikke indbyggede funktioner til at manipulere strenge. |
| Hukommelse allokeres dynamisk. | Størrelsen af tegnarrayet skal allokeres statisk. |
Få mere at vide om forskel mellem strenge og tegnarrays i C++
C++ strengfunktioner
C++ giver nogle indbyggede funktioner, som bruges til strengmanipulation, såsom funktionerne strcpy() og strcat() til kopiering og sammenkædning af strenge. Nogle af dem er:
| Fungere | Beskrivelse |
|---|---|
| længde() | Denne funktion returnerer længden af strengen. |
| bytte rundt() | Denne funktion bruges til at bytte værdier af 2 strenge. |
| størrelse() | Bruges til at finde størrelsen på strengen |
| ændre størrelse() | Denne funktion bruges til at ændre størrelsen på strengen op til det givne antal tegn. |
| Find() | Bruges til at finde den streng, der sendes i parametre |
| skub tilbage() | Denne funktion bruges til at skubbe det beståede tegn i slutningen af strengen |
| pop_back() | Denne funktion bruges til at pop det sidste tegn fra strengen |
| klar() | Denne funktion bruges til at fjerne alle elementer i strengen. |
| strncmp() | Denne funktion sammenligner højst det første antal bytes af begge beståede strenge. |
| strncpy() | Denne funktion ligner strcpy()-funktionen, bortset fra at højst n bytes af src kopieres |
| strrchr() | Denne funktion lokaliserer den sidste forekomst af et tegn i strengen. |
| revnet() | Denne funktion tilføjer en kopi af kildestrengen til slutningen af destinationsstrengen |
| Find() | Denne funktion bruges til at søge efter en bestemt understreng inde i en streng og returnerer positionen af det første tegn i understrengen. |
| erstatte() | Denne funktion bruges til at erstatte hvert element i området [første, sidste), der er lig med gammel værdi med ny værdi. |
| substr() | Denne funktion bruges til at oprette en understreng ud fra en given streng. |
| sammenligne() | Denne funktion bruges til at sammenligne to strenge og returnerer resultatet i form af et heltal. |
| slette() | Denne funktion bruges til at fjerne en bestemt del af en streng. |
C++ Strings iterator funktioner
I C++ giver indbyggede strengiteratorfunktioner programmøren en nem måde at ændre og krydse strengelementer på. Disse funktioner er:
| Funktioner | Beskrivelse |
|---|---|
| begynde() | Denne funktion returnerer en iterator, der peger på begyndelsen af strengen. |
| ende() | Denne funktion returnerer en iterator, der peger på slutningen af strengen. |
| rfind() | Denne funktion bruges til at finde strengens sidste forekomst. |
| rbegin() | Denne funktion returnerer en omvendt iterator, der peger på slutningen af strengen. |
| render() | Denne funktion returnerer en omvendt iterator, der peger på begyndelsen af strengen. |
| cbegin() | Denne funktion returnerer en const_iterator, der peger på begyndelsen af strengen. |
| nogle få() | Denne funktion returnerer en const_iterator, der peger på slutningen af strengen. |
| crbegin() | Denne funktion returnerer en const_reverse_iterator, der peger på slutningen af strengen. |
| crend() | Denne funktion returnerer en const_reverse_iterator, der peger på begyndelsen af strengen. |
Eksempel:
C++
// C++ Program to demonstrate string iterator functions> #include> using> namespace> std;> int> main()> {> >// declaring an iterator> >string::iterator itr;> >// declaring a reverse iterator> >string::reverse_iterator rit;> >string s =>'techcodeview.com'>;> >itr = s.begin();> > >cout <<>'Pointing to the start of the string: '> << *itr<< endl;> >itr = s.end() - 1;> >cout <<>'Pointing to the end of the string: '> << *itr << endl;> >rit = s.rbegin();> >cout <<>'Pointing to the last character of the string: '> << *rit << endl;> >rit = s.rend() - 1;> >cout <<>'Pointing to the first character of the string: '> << *rit << endl;> >return> 0;> }> |
>
>Produktion
Pointing to the start of the string: G Pointing to the end of the string: s Pointing to the last character of the string: s Pointing to the first character of the string: G>
Strengkapacitetsfunktioner
I C++ bruges strengkapacitetsfunktioner til at styre strengstørrelse og -kapacitet. Primære funktioner af kapacitet omfatter:
| Fungere | Beskrivelse |
|---|---|
| længde() | Denne funktion bruges til at returnere størrelsen af strengen |
| kapacitet() | Denne funktion returnerer den kapacitet, som er allokeret til strengen af compileren |
| ændre størrelse() | Denne funktion giver os mulighed for at øge eller formindske strengstørrelsen |
| shrink_to_fit() | Denne funktion reducerer kapaciteten og gør den lig med minimum. |
Eksempel:
C++
#include> using> namespace> std;> int> main()> {> >string s =>'techcodeview.com'>;> > >// length function is used to print the length of the string> >cout <<>'The length of the string is '> << s.length() << endl;> > >// capacity function is used to print the capacity of the string> >cout <<>'The capacity of string is '> << s.capacity()<< endl;> > >// the string.resize() function is used to resize the string to 10 characters> >s.resize(10);> > >cout <<>'The string after using resize function is '> << s << endl;> > >s.resize(20);> > >cout <<>'The capacity of string before using shrink_to_fit function is '><< s.capacity() << endl;> > >// shrink to fit function is used to reduce the capacity of the container> >s.shrink_to_fit();> >cout <<>'The capacity of string after using shrink_to_fit function is '><< s.capacity() << endl;> >return> 0;> }> |
>
>Produktion
The length of the string is 13 The capacity of string is 15 The string after using resize function is GeeksforGe The capacity of string before using shrink_to_fit function is 30 The capacity of string...>
Afslutningsvis forklarer denne artikel, hvordan strenge kan trodses i C++ ved hjælp af tegnarrays og strengklasser. Strengeklassen giver mere avancerede funktioner, mens karakterarrayet giver grundlæggende funktioner, men er effektiv og nem at bruge. I denne artikel diskuterede vi også de forskellige metoder til at tage input fra brugeren.
For at vide mere om std::string class, se artiklen – std::string klasse i C++