string functions c
V tomto kurzu budeme diskutovat o některých populárních řetězcových funkcích v C ++, jako je getline podřetězec, délka řetězce, hledání řetězce, rozdělený řetězec atd .:
C ++ má třídu řetězců, která se používá pro posloupnost znaků, která se také označuje jako řetězce. Tato třída je std :: řetězec . Tato třída ukládá řetězce jako posloupnost bajtů znaků a poskytuje funkce, které nám umožňují manipulovat, přistupovat a číst řetězce, stejně jako přistupovat a manipulovat s jednotlivými znaky.
jak bys otestoval pero
=> Navštivte zde kompletní kurz C ++ od odborníků.
Co se naučíte:
Funkce řetězce C ++
Řetězec C ++ je posloupnost znaků. Když definujeme řetězce v C ++, použijeme řetězec
klíčové slovo, které není nic jiného než třída std :: string. Tato třída řetězců podporuje různé funkce od čtení řetězce, manipulace, přístupu k řetězci atd., Které provádějí různé operace s řetězcovými objekty. Některé často používané funkce jsou uvedeny níže -
Nedělej | Řetězcové funkce | Popis |
---|---|---|
1 | getline | Získá řádek ze streamu do řetězce |
dva | substr | Získejte podřetězec daného řetězce |
4 | Délka, strlen | Získejte délku řetězce |
5 | Nalézt | Najděte obsah v řetězci |
6 | Strtok, substr s oddělovačem | Rozdělte řetězec na žetony |
getline C ++
Funkční prototyp: istream & getline (istream & is, string & str)
Parametry: is => istream objekt, ze kterého jsou znaky extrahovány.
str => Řetězcový objekt, který se používá k uložení extrahovaného znaku.
Návratová hodnota: Návratová hodnota je stejná jako istream. Interně provádění getline nastavuje určité vnitřní příznaky následujícím způsobem.
vlajka | Popis chyby |
---|---|
eofbit | Byl dosažen konec zdroje znaků |
failbit | Vstup nelze interpretovat jako platnou textovou reprezentaci objektu tohoto typu |
badbit | Jakákoli jiná chyba kromě výše uvedených dvou |
Popis: getline je standardní funkce knihovny. Tato funkce se používá ke čtení řádku nebo řetězce ze standardního vstupního proudu, jako je istream. Řádky nebo řetězce se čtou, dokud nenajdete znak „ n“, který je považován za oddělovací znak.
Jako jinou verzi getline lze zadat třetí parametr „char delim“. Toto je znak oddělovače specifikovaný explicitně. V této funkci se bude číst řádek textu nebo řetězce, dokud nenarazí na zadaný znak oddělovače.
Níže je uveden jednoduchý příklad k demonstraci použití getline.
Příklad:
#include #include using namespace std; int main() { string mystr; cout<<'Enter the input string:'< Výstup:
Zadejte vstupní řetězec:
C ++ výukové programy
Zadali jste: C ++ výukové programy
Ve výše uvedeném příkladu čteme vstupní řetězec pomocí funkce getline. Všimněte si, že zadané řetězce nebo text se načítají do řetězcového objektu mystr, dokud nenarazíte na „ n“.
C ++ Substr
Funkční prototyp: string substr (size_t startpos, size_t endpos)
Parametry: startpos => Výchozí pozice, odkud má být extrahován podřetězec.
endpos => Koncová poloha dílčího řetězce.
Návratová hodnota: Vrátí řetězec, který je podřetězcem nadřazeného řetězce.
Popis: Tato funkce vrací podřetězec daného řetězce. Funkce vezme počáteční a koncovou pozici jako parametry a poté vrátí posloupnost znaků mezi těmito pozicemi.
Příklad:
#include #include using namespace std; int main() { string mystr = 'SoftwareTestingHelp'; string mysub = mystr.substr(0,8); cout<<'Input string : '< Výstup:
Vstupní řetězec: SoftwareTestingHelp
Podřetězec (0,8): Software
Délka C ++
Délka řetězce je počet znaků přítomných v řetězci. Reprezentace objektu std :: string řetězců v C ++ používá funkce length () k vrácení délky řetězce.
Kromě toho máme také metodu size, která vrací velikost řetězce. Pro funkci length () jsme použili metodu size v níže uvedeném příkladu. Další funkcí, která vrací délku řetězce, je „strlen“. Tato funkce vrací délku řetězce označenou znakovým polem.
Obě funkce uvidíme jednu po druhé s příklady.
délka()
Funkční prototyp: size_t délka ()
Parametry: Vyvoláno řetězcem, jehož délku je třeba zjistit.
Návratová hodnota: Vrátí parametr typu size_t, což je délka řetězce.
výběr řazení c ++ příklad kódu
Popis: Tato funkce vyhledá délku řetězcového objektu, o kterou je vyvolána.
Příklad:
#include #include using namespace std; int main() { string mystr = 'SoftwareTestingHelp'; cout<<'Input string : '< Výstup:
Vstupní řetězec: SoftwareTestingHelp
Délka řetězce (s délkovou metodou) je: 19
Velikost řetězce (s metodou velikosti) je: 19
Ve výše uvedeném programu používáme funkce délky a velikosti std :: string, které vracejí délku a velikost objektu řetězce. Protože délka a velikost vrací počet znaků v řetězci, získáme stejný výstup.
strlen ()
Funkční prototyp: size_t strlen (const char * str);
Parametry: str => Ukazatel na řetězec s nulovou koncovkou, jehož délku je třeba zjistit.
Návratová hodnota: R hodnota eturns size_t označující délku řetězce str.
Popis: funkce strlen () vrací délku řetězce zakončeného nulou. Řetězec, který funkce strlen bere jako parametr, je znakové pole s nulovou koncovkou.
Příklad:
#include #include using namespace std; int main() { char mystr1[] = 'This a our first string'; char mystr2[] = 'This is our second string'; int len_mystr1 = strlen(mystr1); int len_mystr2 = strlen(mystr2); cout << 'Length of mystr1 = ' << len_mystr1 << endl; cout << 'Length of mystr2 = ' << len_mystr2 << endl; if (len_mystr1> len_mystr2) cout << 'mystr1 is longer than mystr2'; else if (len_mystr1 < len_mystr2) cout << 'mystr2 is longer than mystr1'; else cout << 'mystr1 and mystr2 are equal in length'; return 0; }
Výstup:
Délka mystr1 = 23
Délka mystr2 = 25
mystr2 je delší než mystr1
Ve výše uvedeném programu jsme definovali dva různé řetězce a pomocí funkce strlen zjistíme jejich individuální délku. Pak porovnáme délku dvou řetězců a určíme, zda jsou řetězce stejné nebo nerovné.
C ++ Najít
Funkční prototyp: size_t find (řetězec mysub)
Parametry: mysub => Řetězcový objekt, který se nachází uvnitř nadřazeného řetězce.
Návratová hodnota: size_t => První pozice podřetězce v nadřazeném řetězci
Popis: Funkce find řetězce se používá k nalezení polohy podřetězce v nadřazeném řetězci. Tato funkce je vyvolána nadřazeným řetězcem a jako parametr je předán podřetězec, jehož poloha má být nalezena. Pokud podřetězec není k dispozici, je vrácena prázdná pozice.
Příklad:
#include #include using namespace std; int main() { string mystr = 'SoftwareTestingHelp'; string mysub = 'Test'; size_t pos = mystr.find(mysub); if (pos != string::npos) cout << 'First occurrence of string '< Výstup:
První výskyt řetězce Test: 8
První výskyt řetězce Nápověda: 15
Tento program definuje řetězec jako „SoftwareTestingHelp“. Pomocí funkce find najdeme první výskyt řetězce „Test“ v nadřazeném řetězci. Dále zjistíme výskyt řetězce „Nápověda“. Výstupem je poloha výskytu hledaného řetězce.
Split String
Rozdělení řetězce pomocí oddělovače nebo tokenu je užitečná operace. V C ++, protože máme více než jednu reprezentaci řetězců, můžeme k rozdělení řetězce použít různé přístupy. Zde probereme dva přístupy k rozdělení řetězce.
Rozdělení objektu std :: string
Nejjednodušší přístup k rozdělení objektu řetězce je použití funkce „substr“ na objektu a poskytnutí oddělovače jako koncové polohy, abychom získali podřetězec. Tímto způsobem můžeme rozdělit řetězec na oddělovač, dokud nepřejdeme celý řetězec.
Podívejme se na příklad níže, který nejprve najde pozici oddělovače pomocí funkce „find“, poté najde podřetězec a nakonec odešle každý z tokenů.
#include #include using namespace std; int main() { string mystr = 'This_is_software_testing_help'; string delimiter = '_'; size_t pos = 0; string token; while ((pos = mystr.find(delimiter)) != std::string::npos) { token = mystr.substr(0, pos); cout << token << endl; mystr.erase(0, pos + delimiter.length()); } cout << mystr<< endl; }
Výstup:
Tento
je
software
testování
Pomoc
Jak je znázorněno ve výše uvedeném programu, zadáme oddělovač, který bude použit k rozdělení daného řetězce. Ve smyčce opakovaně zjistíme výskyt oddělovače pomocí funkce find a předáme ji funkci substr a načteme podřetězec. Poté se každý z těchto získaných tokenů zobrazí jako výstup.
Rozdělení pole znaků pomocí funkce strtok
Dalším způsobem tokenizace řetězce (rozdělení řetězce pomocí oddělovače) je použití funkce „strtok“. Níže budeme diskutovat o specifikách funkce „strtok“.
Funkční prototyp: char * strtok (char str [], const char * oddělovač)
Parametry: str [] => Řetězec, který má být rozdělen.
Oddělovač => Oddělovač, na kterém má být řetězec rozdělen.
Návratová hodnota: Vrátí další token po rozdělení nadřazeného řetězce.
Popis: Funkce strtok rozděluje daný řetězec na tokeny na daných oddělovačích. Tuto funkci je třeba volat ve smyčce, abychom získali všechny tokeny pro daný řetězec. Když už žádné další tokeny nezbývají, funkce vrátí null.
Příklad:
#include #include using namespace std; int main() { char mystr[] = 'This_is_software_testing_help'; char *token = strtok(mystr, '_'); while (token != NULL) { cout< Výstup:
Tento
je
software
testování
Pomoc
Všimněte si, že v tomto programu používáme funkci strtok, která jako argumenty používá řetězec a oddělovač. Poté rozdělí řetězec na token na základě zadaného oddělovače a zobrazí jednotlivé tokeny.
Závěr
V tomto kurzu jsme viděli některé obecně důležité funkce používané pro řetězce C ++.
Diskutovali jsme o funkcích pro čtení vstupního řetězce, hledání řetězce, podřetězce nadřazeného řetězce, délky řetězce, rozdělení řetězce atd. Spolu s jejich variacemi. Tyto funkce nám pomáhají efektivně číst a manipulovat s řetězci.
nejlepší nápad pro python pro Windows 10
V našem dalším kurzu uvidíme podrobně některé funkce převodu používané s řetězcem C ++.
=> Navštivte zde a prohlédněte si celou sérii školení C ++ pro všechny.
Doporučené čtení
- Funkce řetězce Python
- Výukový program Java String s funkcí String Buffer a String Builder
- Funkce převodu znaků v C ++: char to int, char to string
- Řetězcové funkce VBScript: Funkce VBScript inStr, Replace, Mid a Trim
- Výukový program pro rozdělení řetězce v Pythonu
- C # String Tutorial - Metody řetězců s příklady kódu
- Funkce Pythonu
- String Array C ++: Implementace a reprezentace s příklady