C ++ strxfrm () - standardní knihovna C ++

Funkce strxfrm () v C ++ transformuje daný bajtový řetězec zakončený hodnotou null do formy definované implementací.

Funkce strxfrm () transformuje řetězec tak, že porovnání dvou transformovaných řetězců pomocí funkce strcmp () vytvoří stejný výsledek jako porovnání původních řetězců pomocí funkce strcoll () v aktuálním národním prostředí C.

Například xay jsou dva řetězce. a a b jsou dva řetězce vytvořené transformací x a y pomocí funkce strxfrm. Pak je volání strcmp (a, b) stejné jako volání strcoll (x, y).

prototyp strxfrm ()

 size_t strxfrm (char * dest, const char * src, size_t count);

Funkce strxfrm () převede první počet znaků řetězce, na který odkazuje src, do formy definované implementací a výsledek se uloží do umístění paměti, na které ukazuje dest.

Chování této funkce není definováno, pokud:

  • velikost cíle je menší než požadovaná velikost.
  • dest a src se překrývají.

Je definován v hlavičkovém souboru.

strxfrm () parametry

  • dest: ukazatel na pole, kde je uložen transformovaný řetězec.
  • src: ukazatel na řetězec zakončený hodnotou null, který se má transformovat.
  • count: maximální počet znaků k převodu.

strxfrm () Návratová hodnota

Funkce strxfrm () vrací počet transformovaných znaků, s výjimkou ukončovacího nulového znaku ' 0'.

Příklad: Jak funguje funkce strxfrm ()?

 #include #include #include using namespace std; int main() ( setlocale(LC_COLLATE, "cs_CZ.UTF-8"); const char* s1 = "hrnec"; const char* s2 = "chrt"; char t1(20), t2(20); cout << "strcoll returned " << strcoll(s1,s2) << endl; cout << "Before transformation, " << "strcmp returned " << strcmp(s1,s2) << endl; strxfrm(t1,s1,10); strxfrm(t2,s2,10); cout << "After transformation, " << "strcmp returned " << strcmp(t1,t2) << endl; return 0; )

Když spustíte program, výstup bude:

 strcoll vrátil -1 Před transformací vrátil strcmp 1 Po transformaci vrátil strcmp -1

Zajímavé články...