Ieșirea șirului introdus la c. Eliminați numărul specificat de caractere dintr-un șir. funcția erase(). Exemplu. Ce sunt șirurile

Ultima actualizare: 31.10.2015

Concatenare

Concatenarea sau concatenarea șirurilor se poate face fie cu operatorul +, fie cu metoda Concat:

String s1 = „bună ziua”; șir s2 = „lume”; șir s3 = s1 + " " + s2; // rezultat: string "hello world" string s4 = String.Concat(s3, "!!!"); // rezultat: șir "bună lume!!!" Consola WriteLine(s4);

Metoda Concat este o metodă statică a clasei String care ia ca parametri două șiruri. Există și alte versiuni ale metodei care iau un număr diferit de parametri.

Metoda Join poate fi folosită și pentru a concatena șiruri:

String s5 = „măr”; șir s6 = „o zi”; șir s7 = „păstrează”; șir s8 = „doctor”; șir s9 = „departe”; valorile șirului = șir nou ( s5, s6, s7, s8, s9 ); String s10 = String.Join(" ", valori); // rezultat: șirul „un măr pe zi ține un doctor departe”

Metoda Join este, de asemenea, statică. Versiunea metodei utilizate mai sus ia doi parametri: un șir delimitator (în acest caz space) și o matrice de șiruri care urmează să fie concatenate și delimitate.

Comparație de șiruri

Pentru a compara șirurile de caractere, utilizați metoda de comparare statică:

String s1 = „bună ziua”; șir s2 = „lume”; int rezultat = String.Compare(s1, s2); dacă (rezultat<0) { Console.WriteLine("Строка s1 перед строкой s2"); } else if (result >0) ( Console.WriteLine("Linia s1 vine după linia s2"); ) else ( Console.WriteLine ("Liniile s1 și s2 sunt identice"); ) // rezultatul va fi "Linia s1 vine înaintea liniei s2"

Această versiune a metodei Compare are două șiruri de caractere și returnează un număr. Dacă primul șir este alfabetic mai mare decât al doilea, atunci este returnat un număr mai mic decât zero. În caz contrar, se returnează un număr mai mare decât zero. Și al treilea caz - dacă șirurile sunt egale, atunci numărul 0 este returnat.

În acest caz, deoarece caracterul h este alfabetic mai mare decât caracterul w, prima linie va fi de asemenea mai mare.

Căutați într-un șir

Folosind metoda IndexOf, putem determina indexul primei apariții a unui singur caracter sau subșir dintr-un șir:

String s1 = „bună lume”; char ch = "o"; int indexOfChar = s1.IndexOf(ch); // este egal cu 4 Console.WriteLine(indexOfChar); șir subString = „wor”; int indexOfSubstring = s1.IndexOf(subString); // este egal cu 6 Console.WriteLine(indexOfSubstring);

Metoda LastIndexOf funcționează într-un mod similar, găsește doar indexul ultimei apariții a unui caracter sau subșir dintr-un șir.

Un alt grup de metode vă permite să aflați dacă un șir începe sau se termină cu un anumit subșir. Pentru asta sunt metodele StartsWith și EndsWith. De exemplu, avem o sarcină de a elimina toate fișierele cu extensia .exe dintr-un folder:

Calea șirului = @"C:\SomeDir"; fișiere șir = Directory.GetFiles(cale); pentru (int i = 0; i< files.Length; i++) { if(files[i].EndsWith(".exe")) File.Delete(files[i]); }

Divizarea liniei

Cu funcția Split, putem împărți un șir într-o matrice de subșiruri. Ca parametru, funcția Split ia o matrice de caractere sau șiruri, care vor servi drept separatori. De exemplu, să numărăm numărul de cuvinte dintr-un termen împărțindu-l la caractere cu spații albe:

String text = „Și de aceea s-a întâmplat totul”; cuvinte șir = text.Split(car nou (" " )); foreach (șir de caractere în cuvinte) ( Console.WriteLine(s); )

Aceasta nu este cea mai bună modalitate de a împărți după spații, deoarece am putea avea mai multe spații consecutive în șirul de intrare, iar spațiile ar intra și în tabloul final, deci este mai bine să folosiți o versiune diferită a metodei:

String words = text.Split(new char ( " " ), StringSplitOptions.RemoveEmptyEntries);

Al doilea parametru StringSplitOptions.RemoveEmptyEntries spune să eliminați toate subșirurile goale.

Tăierea unei sfori

Pentru a decupa caracterele de început sau de sfârșit, utilizați funcția Trim:

String text = „bună lume”; text = text.Trim(); // rezultat "hello world" text = text.Trim(new char ("d", "h" )); // rezultat „ello lume”

Funcția Trim fără parametri decupează spațiile de început și de final și returnează șirul tăiat. Pentru a specifica în mod explicit caracterele de început și de sfârșit de tăiat, putem trece o matrice din acele caractere funcției.

Această funcție are analogi parțial: funcția TrimStart decupează caracterele de început, iar funcția TrimEnd decupează caracterele de sfârșit.

Funcția Substring vă permite să tăiați o anumită parte a unui șir:

String text = „O zi bună”; // tăiați începând de la al treilea caracter text = text.Substring(2); // rezultat „o zi bună” Console.WriteLine(text); // tăiați primul la ultimele două caractere text = text.Substring(0, text.Length - 2); // rezultatul este „bun de” Console.WriteLine(text);

Funcția Substring returnează și șirul tăiat. Ca parametru, prima versiune folosită folosește indexul din care să tăiați șirul. A doua versiune folosește doi parametri - indicele începutului de tăiere și lungimea părții tăiate a șirului.

Introduce

Pentru a insera un rând în altul, utilizați funcția Inserare:

String text = „O zi bună”; string subString = „minunat”; text = text.Insert(8, subString); Console.WriteLine(text);

Primul parametru din funcția Insert este indexul la care se inserează subșirul, iar al doilea parametru este subșirul în sine.

Eliminarea rândurilor

Metoda Remove ajută la eliminarea unei părți a unui șir:

String text = „O zi bună”; // indexul ultimului caracter int ind = text.Lungime - 1; // decupează ultimul caracter text = text.Remove(ind); Console.WriteLine(text); // decupează primele două caractere text = text.Remove(0, 2);

Prima versiune a metodei Remove preia un index în șir din care să elimine toate caracterele. A doua versiune necesită încă un parametru - câte caractere trebuie eliminate.

Înlocuire

Pentru a înlocui un caracter sau subșir cu altul, utilizați metoda Înlocuire:

String text = „o zi bună”; text = text.Inlocuire("bine", "rau"); Console.WriteLine(text); text = text.Replace("o", ""); Console.WriteLine(text);

În al doilea caz de utilizare a funcției Înlocuire, un șir de un caracter „o” este înlocuit cu un șir gol, adică este de fapt eliminat din text. Într-un mod similar, este ușor să ștergeți un anumit text în rânduri.

Schimbarea cazului

Pentru a converti un șir în majuscule și minuscule, sunt utilizate funcțiile ToUpper() și, respectiv, ToLower():

String hello = „Bună lume!”; Console.WriteLine(hello.ToLower()); // Salut Lume! Console.WriteLine(hello.ToUpper()); // SALUT LUME!

34

--- Tutorial C# --- Strings

În ceea ce privește programarea obișnuită, șir tipul de date șir este una dintre cele mai importante din C#. Acest tip definește și acceptă șiruri de caractere. Într-un număr de alte limbaje de programare, un șir este o matrice de caractere. Și în C#, șirurile sunt obiecte. Prin urmare, tipul șir este unul dintre tipurile de referință.

Construcția rândurilor

Cel mai simplu mod de a construi un șir de caractere este să utilizați un șir literal. De exemplu, în următoarea linie de cod, variabilei de referință șir str i se atribuie o referință la un literal șir:

String str = „Exemplu șir”;

În acest caz, variabila str este inițializată cu secvența de caractere „Example String”. Un obiect de tip șir poate fi creat și dintr-o matrice de tip char. De exemplu:

Char chararray = ("e", "x", "a", "m", "p", "l", "e"); șir str = șir nou (chararray);

Odată ce un obiect de tip șir a fost creat, acesta poate fi folosit oriunde este nevoie de un șir de text citat.

Persistența șirului

În mod ciudat, conținutul unui obiect de tip șir nu poate fi modificat. Aceasta înseamnă că odată ce o secvență de caractere a fost creată, aceasta nu poate fi modificată. Dar această limitare contribuie la o implementare mai eficientă a șirurilor de caractere. Prin urmare, acesta, la prima vedere, un dezavantaj evident se transformă de fapt într-un avantaj. Deci, dacă aveți nevoie de un șir ca o variație a unui șir existent, atunci în acest scop ar trebui să creați un șir nou care să conțină toate modificările necesare. Și, deoarece obiectele șir neutilizate sunt colectate automat în „gunoi”, atunci nici nu trebuie să vă faceți griji cu privire la soarta șirurilor inutile.

Cu toate acestea, trebuie subliniat faptul că variabilele de referință șir (adică obiecte de tip șir) sunt supuse modificării și, prin urmare, se pot referi la un alt obiect. Dar conținutul obiectului șir în sine nu se schimbă după ce a fost creat.

Luați în considerare un exemplu:

Static void addNewString() ( șir s = „Acesta este accidentul vascular cerebral”; s = „Acesta este un accident vascular cerebral nou”; )

Să compilam aplicația și să încărcăm ansamblul rezultat în utilitarul ildasm.exe. Figura arată codul CIL care va fi generat pentru metoda void addNewString():

Observați apelurile multiple către opcode ldstr (încărcare șir). Acest opcode ldstr în CIL determină încărcarea unui nou obiect șir în heap-ul gestionat. Drept urmare, obiectul anterior care conținea valoarea „Acesta este lovitura mea” va fi în cele din urmă colectat de gunoi.

Lucrul cu șiruri

In clasa System.String este furnizat un set de metode pentru determinarea lungimii datelor de caractere, căutarea unui subșir în șirul curent, conversia caracterelor din majuscule în litere mici și invers și așa mai departe. Ne vom uita la această clasă mai detaliat în continuare.

Câmp, indexator și proprietatea clasei String

Clasa String are un singur câmp definit:

Șir public static numai pentru citire Gol;

Câmpul Gol denotă un șir gol, de exemplu. un șir care nu conține caractere. Aceasta este diferită de o referință String goală, care este pur și simplu făcută la un obiect inexistent.

În plus, clasa String definește un singur indexator numai pentru citire:

Public Char this ( obține; )

Acest indexator vă permite să obțineți caracterul la indexul specificat. Indexarea șirurilor, ca și tablourile, începe de la zero. Obiectele String sunt persistente și nu se modifică, așa că are sens ca clasa String să accepte un indexator doar pentru citire.

În cele din urmă, clasa String definește o singură proprietate numai pentru citire:

Public int Lungime ( get; )

Proprietatea Length returnează numărul de caractere dintr-un șir. Exemplul de mai jos arată utilizarea unui indexator și a proprietății Length:

Utilizarea sistemului; Exemplu de clasă ( static void Main() ( string str = "Șir simplu"; // Obține lungimea șirului și al 6-lea caracter din șir folosind indexerul Console.WriteLine ("Lungimea șirului este (0), al 6-lea caracter este "(1)"" , str.Lungime, str); ) )

Operatori de clasă String

Clasa String supraîncarcă următorii doi operatori: == și !=. Operatorul == este folosit pentru a testa două șiruri de caractere pentru egalitate. Când operatorul == este aplicat referințelor la obiect, de obicei verifică dacă ambele referințe sunt la același obiect. Și când operatorul == este aplicat referințelor de obiecte de tip String, conținutul șirurilor în sine este comparat pentru egalitate. Același lucru este valabil și pentru operatorul !=. Când este aplicat referințelor de obiecte de tip String, conținutul șirurilor în sine este comparat pentru inegalitate. În același timp, alți operatori relaționali, inclusiv =, compară referințele la obiecte de tip String în același mod ca și la obiecte de alte tipuri. Și pentru a verifica dacă un șir este mai mare decât altul, ar trebui să apelați metoda Compare() definită în clasa String.

După cum va deveni clar mai târziu, multe tipuri de comparații de șiruri de caractere folosesc informații culturale. Dar acest lucru nu se aplică operatorilor == și !=. La urma urmei, pur și simplu compară valorile ordinale ale caracterelor din șiruri. (Cu alte cuvinte, ei compară valorile caracterelor binare care nu au fost modificate de normele culturale, de exemplu, locații.) Prin urmare, acești operatori efectuează comparații de șiruri într-o manieră insensibilă la majuscule și la cultură.

Metode ale clasei de șiruri

Următorul tabel listează câteva dintre cele mai interesante metode ale acestei clase, grupate după scop:

Metode cu șiruri
Metodă Structură și versiuni supraîncărcate Scop
Comparație de șiruri
Comparaţie() public static int Compare(șir strA, șir strB)

Public static int Compare (șir strA, șir strB, bool ignoreCase)

Public static int Compare(șir strA, șir strB, StringComparison comparisonType)

Public static int Compare (șir strA, șir strB, bool ignoreCase, cultură CultureInfo)

Metodă statică, compară șirul strA cu șirul strB. Returnează pozitiv dacă strA este mai mare decât strB; negativ dacă strA este mai mic decât strB; și zero dacă șirurile strA și strB sunt egale. Comparația ține seama de majuscule și minuscule și ține cont de cultura.

Dacă parametrul ignoreCase este setat la valoarea booleană true, atunci comparația nu ia în considerare diferențele dintre literele mari și mici. În caz contrar, aceste diferențe sunt luate în considerare.

Parametrul comparisonType specifică mod specific comparații de șiruri. Clasa CultureInfo este definită în spațiul de nume System.Globalization.

public static int Compare (șir strA, int indexA, șir strB, int indexB, int lungime)

Public static int Compare (șir strA, int indexA, șir strB, int indexB, int lungime, bool ignoreCase)

Public static int Compare(șir strA, int indexA, șir strB, int indexB, int lungime, StringComparison comparisonType)

Public static int Compare (șir strA, int indexA, șir strB, int indexB, int lungime, bool ignoreCase, cultură CultureInfo)

Compară părți ale șirurilor strA și strB. Comparația începe cu elementele șir strA și strB și include numărul de caractere specificat de parametrul length. Metoda returnează o valoare pozitivă dacă o parte din strA este mai mare decât o parte din strB; o valoare negativă dacă o parte din strA este mai mică decât o parte din strB; și zero dacă părțile comparate ale șirurilor strA și strB sunt egale. Comparația ține seama de majuscule și minuscule și ține cont de cultura.

comparaOrdinal() public static int CompareOrdinal(șir strA, șir strB)

Public static int CompareOrdinal(șir strA, int indexA, șir strB, int indexB, int număr)

Face la fel ca metoda Compare(), dar fără a ține cont de setările locale

Compara cu() public int CompareTo(valoarea obiectului)

Compară șirul de apelare cu reprezentarea șir a obiectului valoare. Returnează o valoare pozitivă dacă șirul de apelare este mai mare decât valoarea șirului; o valoare negativă dacă șirul de apelare este mai mic decât șirul de valoare; și zero dacă șirurile comparate sunt egale

public int CompareTo(string strB)

Compară șirul de apelare cu strB

este egal() public override bool Equals(object object)

Returnează valoarea booleană adevărată dacă șirul de apelare conține aceeași secvență de caractere ca și reprezentarea șir a lui obj. Efectuează o comparație ordinală, ținând cont de majuscule și minuscule, dar insensibilă din punct de vedere cultural

public bool Egal (valoare șir)

Public bool Equals (valoare șir, StringComparison comparisonType)

Returnează valoarea booleană adevărată dacă șirul de apelare conține aceeași secvență de caractere ca și valoarea șirului. Se efectuează o comparație ordinală, ținând cont de majuscule, dar insensibilă din punct de vedere cultural. Parametrul comparisonType definește un mod specific de a compara șirurile

public static bool Egal (șir a, șir b)

Public static bool Equals (șir a, șir b, StringComparison comparisonType)

Returnează boolean adevărat dacă șirul a conține aceeași secvență de caractere ca șirul b. Se efectuează o comparație ordinală, ținând cont de majuscule, dar insensibilă din punct de vedere cultural. Parametrul comparisonType definește un mod specific de a compara șirurile

Concatenarea (conectarea) șirurilor
Concat() public static string Concat(string str0, string str1);

public static string Concat(params string values);

Combină instanțe de șir separate într-un singur șir (concatenare)
Căutați într-un șir
Conține() public bool Conține (valoare șir) O metodă care vă permite să determinați dacă un șir conține un anumit subșir (valoare)
Incepe cu() public bool StartsWith(valoare șir)

Public bool StartsWith(valoare șir, Tip comparație șir de caractere)

Returnează valoarea booleană adevărată dacă șirul de apelare începe cu subșirul de valoare. În caz contrar, se returnează valoarea booleană false. Parametrul comparisonType specifică modul în care urmează să fie efectuată căutarea.

Se termină cu() public bool EndsWith(valoare șir)

Public bool EndsWith(valoare șir, tip de comparație StringComparison)

Returnează valoarea booleană adevărată dacă șirul de apelare se termină cu subșirul de valoare. În caz contrar, returnează valoarea booleană false. Parametrul comparisonType definește o anumită metodă de căutare

Index de() public int IndexOf(valoare caracter)

Public int IndexOf(valoare șir)

Găsește prima apariție a unui subșir sau caracter dat într-un șir. Dacă caracterul sau subșirul pe care îl căutați nu este găsit, atunci este returnat -1.

public int IndexOf(valoare caracter, int startIndex)

Public int IndexOf(valoare șir, int startIndex)

Public int IndexOf(valoare caracter, int startIndex, int număr)

Public int IndexOf(valoare șir, int startIndex, int număr)

Returnează indexul primei apariții a caracterului sau a valorii subșirului din șirul de apelare. Căutarea începe de la elementul specificat la index startIndex și se întinde pe numărul de elemente specificat de parametrul count (dacă este specificat). Metoda returnează -1 dacă caracterul sau subșirul căutat nu este găsit

LastIndexOf() Versiunile supraîncărcate sunt similare cu metoda IndexOf().

La fel ca IndexOf, dar găsește ultima apariție a unui caracter sau subșir în loc de prima

IndexOfAny() public int IndexOfAny(char anyOf)

Public int IndexOfAny(char anyOf, int startIndex)

Public int IndexOfAny(char anyOf, int startIndex, int număr)

Returnează indexul primei apariții a oricărui caracter din tabloul anyOf găsit în șirul de apelare. Căutarea începe de la elementul specificat de index startIndex și se întinde pe numărul de elemente specificat de parametrul count (dacă există). Metoda returnează -1 dacă nu se găsește nicio potrivire pentru niciunul dintre caracterele din tabloul anyOf. Căutarea se efectuează în mod ordinal

LastIndexOfAny Versiunile supraîncărcate sunt similare cu metoda IndexOfAny().

Returnează indexul ultimei apariții a oricărui caracter din tabloul anyOf găsit în șirul de apelare

Împărțirea și concatenarea șirurilor
Despică șir public Split(params char separator)

Șir public Split(params char separator, int count)

O metodă care returnează o matrice de șiruri cu subșirurile prezente în această instanță în interior, separate unele de altele prin elemente din matricea de șiruri de caractere specificată.

Prima formă a metodei Split() împarte șirul de apelare în părțile sale componente. Rezultatul este o matrice care conține subșirurile preluate din șirul de apelare. Caracterele care delimitează aceste subșiruri sunt trecute în tabloul separator. Dacă matricea de separare este goală sau se referă la un șir gol, atunci un spațiu este folosit ca separator de subșir. Și în a doua formă a acestei metode, este returnat numărul de subșiruri determinat de parametrul count.

șir public Split (params char separator, opțiuni StringSplitOptions)

Split șir public (separator șir, opțiuni StringSplitOptions)

Split șir public (params char separator, int count, StringSplitOptions opțiuni)

Split șir public (separator șir, număr int, opțiuni StringSplitOptions)

Primele două forme ale metodei Split() împart șirul de apelare în părți și returnează o matrice care conține subșirurile obținute din șirul de apelare. Caracterele care separă aceste subșiruri sunt transmise în tabloul separator. Dacă matricea de separare este goală, atunci un spațiu este folosit ca separator. Și în a treia și a patra formă a acestei metode, numărul de rânduri este returnat, limitat de parametrul count.

Dar în toate formele, parametrul opțiuni specifică o modalitate specifică de a gestiona șirurile goale, care sunt generate atunci când doi delimitatori sunt adiacenți. Enumerarea StringSplitOptions definește doar două valori: Nici unulȘi EliminațiEmptyEntries. Dacă parametrul opțiuni ia Nicio valoare, apoi șirurile goale sunt incluse în rezultatul final al împărțirii șirului original. Și dacă parametrul opțiuni este setat la RemoveEmptyEntries, atunci șirurile goale sunt excluse din rezultatul final al împărțirii șirului original.

A te alatura() Join string public static (separator șir, valoare șir)

Unire șir static public (separator șir, valoare șir, int startIndex, int număr)

Construiește un șir nou combinând conținutul unei matrice de șiruri.

Prima formă a metodei Join() returnează un șir format din subșiruri concatenate trecute în tabloul de valori. A doua formă returnează, de asemenea, un șir format din subșiruri trecute în tabloul de valori, dar acestea sunt concatenate în o anumită sumă count, începând cu elementul de matrice de valori. În ambele forme, fiecare linie succesivă este separată de linia anterioară printr-un șir separator specificat de parametrul separator.

Linii de umplere și tundere
tunde() șir public Trim()

șir public Trim(params char trimChars)

O metodă care vă permite să eliminați toate aparițiile unui set specificat de caractere de la începutul și sfârșitul șirului curent.

Prima formă a metodei Trim() elimină spațiile de început și de final din șirul de apelare. Și a doua formă a acestei metode elimină aparițiile de început și de final din șirul de caractere de apelare din tabloul trimChars. Ambele forme returnează șirul rezultat.

PadLeft() șir public PadLeft(int totalWidth)

Șir public PadLeft(int totalWidth, char paddingChar)

Vă permite să completați șirul cu caractere din stânga.

Prima formă a metodei PadLeft() inserează spații în partea stângă a șirului de apelare, astfel încât lungimea sa totală să fie egală cu valoarea parametrului totalWidth. În a doua formă a acestei metode, caracterele notate de parametrul paddingChar sunt introduse în partea stângă a șirului de apelare, astfel încât lungimea sa totală să devină egală cu valoarea parametrului totalWidth. Ambele forme returnează șirul rezultat. Dacă valoarea parametrului totalWidth este mai mică decât lungimea șirului de apelare, atunci este returnată o copie a șirului de apelare nemodificat.

PadRight() Similar cu PadLeft()

Vă permite să completați șirul cu caractere la dreapta.

Inserarea, ștergerea și înlocuirea rândurilor
Introduce() șir public Insert(int startIndex, valoare șir)

Folosit pentru a insera un șir în altul, unde value este șirul care trebuie inserat în șirul de apelare la index startIndex. Metoda returnează șirul rezultat.

Elimina() șir public Remove(int startIndex)

Șir public Eliminare (int startIndex, int număr)

Folosit pentru a elimina o parte dintr-un șir. În prima formă a metodei Remove(), eliminarea este efectuată începând de la locația specificată de index startIndex și continuând până la sfârșitul șirului. Și în a doua formă a acestei metode, numărul de caractere specificat de parametrul count este eliminat din șir, începând de la locul specificat de indexul startIndex.

A inlocui() șir public Înlocuire(char oldChar, char newChar)

Șir public Înlocuire (șir vechiValoare, șir newValue)

Folosit pentru a înlocui o parte dintr-un șir. Prima formă a metodei Replace() înlocuiește toate aparițiile oldChar din șirul de apelare cu newChar. Și în a doua formă a acestei metode, toate aparițiile șirului oldValue din șirul apelant sunt înlocuite cu șirul newValue.

Schimbarea cazului
În sus() șir public ToUpper()

Scrie cu majuscule toate literele din șirul de apelare.

Pentru a reduce() șir public ToLower()

Face toate literele din șirul de apelare cu minuscule.

Obținerea unui subșir dintr-un șir
subșir () șir public Subșir (int startIndex)

Șir public Subșir (int startIndex, int lungime)

În prima formă a metodei Substring(), subșirul este extras din locația indicată de parametrul startIndex până la sfârșitul șirului de apelare. Și în cea de-a doua formă a acestei metode, se extrage un subșir, format din numărul de caractere specificat de parametrul lungime, începând de la locul indicat de parametrul startIndex.

Exemplu programul următor folosește mai multe dintre metodele de mai sus:

Utilizarea sistemului; folosind System.Collections.Generic; folosind System.Linq; folosind System.Text; namespace ConsoleApplication1 ( clasa Program ( static void Main(string args) ( // Compara primele două șiruri șir s1 = „acesta este un șir"; șir s2 = „acesta este text, acesta este un șir"; if (String.CompareOrdinal (s1, s2) != 0) Console.WriteLine(„Șirurile s1 și s2 nu sunt egale”); if (String.Compare(s1, 0, s2, 13, 10, true) == 0) Console.WriteLine( „Totuși, ele conțin același text”); // Concatenare șiruri Console.WriteLine(String.Concat("\n" + "Unu, doi ","trei, patru")); // Căutare în șir // Prima apariție de subșir dacă (s2. IndexOf(„acest”) != -1) Console.WriteLine(„Cuvântul \”acest\” a fost găsit în linie, este „+ ”la: (0) poziție”, s2. IndexOf("this")); // Ultima apariție a subșirului dacă (s2.LastIndexOf("this") != -1) Console.WriteLine("Ultima apariție a \"this\" este " + "la ( 0) poziție", s2.LastIndexOf("this" )); // Căutare din matricea de caractere char myCh = ("S","x","t"); if (s2.IndexOfAny(myCh) != -1) Console.WriteLine("Unul dintre caracterele din tabloul ch "+ "găsit în linia curentă la poziția (0)", s2.IndexOfAny(myCh)); // Stabilește dacă șirul începe cu subșirul dat if (s2.StartsWith("acesta este text") == true) Console.WriteLine("Subșir găsit!"); // Determinați dacă șirul conține un subșir // folosind exemplul de determinare a șirului de sistem de operare al utilizatorului myOS = Environment.OSVersion.ToString(); if (myOS.Contains ("NT 5.1")) Console.WriteLine ("Sistemul dvs. de operare este Windows XP"); else if (myOS.Contains ("NT 6.1")) Console.WriteLine ("Sistemul dvs. de operare este Windows 7"); Console.ReadLine(); ) ) )

Un pic despre compararea șirurilor în C#

Dintre toate operațiunile de procesare a șirurilor de caractere, este probabil cea mai frecventă comparare a unui șir cu altul. Înainte de a analiza orice metode de comparare a șirurilor, trebuie subliniate următoarele: compararea șirurilor se poate face în .NET Framework în două moduri principale:

    În primul rând, comparația poate reflecta obiceiurile și normele unui anumit mediu cultural, care sunt adesea setări culturale care intră în vigoare atunci când un program este executat. Acesta este un comportament standard pentru unele, deși nu pentru toate, metodele de comparație.

    Și în al doilea rând, comparația poate fi efectuată indiferent de setările mediului cultural doar pe valorile ordinale ale caracterelor care alcătuiesc șirul. În general, compararea șirurilor de caractere insensibile din punct de vedere cultural utilizează ordinea lexicografică (și caracteristicile lingvistice) pentru a determina dacă un șir este mai mare decât, mai mic sau egal cu un alt șir. Într-o comparație ordinală, șirurile sunt pur și simplu ordonate pe baza valorii nemodificate a fiecărui caracter.

Din cauza diferențelor în modul în care sunt comparate șirurile între culturi și comparațiile ordinale și a implicațiilor fiecărei astfel de comparații, vă recomandăm insistent să utilizați cele mai bune practici oferite în prezent de Microsoft. La urma urmei, alegerea modului greșit de a compara șirurile poate duce la funcționarea incorectă a programului atunci când acesta este operat într-un mediu diferit de cel în care a fost dezvoltat.

Alegerea modului de comparare a șirurilor de caractere este o decizie foarte importantă. Ca regulă generală și fără excepție, ar trebui să alegeți o comparație de șiruri sensibilă din punct de vedere cultural dacă aceasta are scopul de a afișa rezultatul utilizatorului (de exemplu, pentru a afișa o serie de șiruri sortate în ordine lexicografică). Dar dacă șirurile conțin informații fixe care nu sunt menite să fie modificate pentru diferențele culturale, cum ar fi un nume de fișier, un cuvânt cheie, o adresă de site web sau o valoare legată de securitate, atunci ar trebui să alegeți o comparație de șiruri ordinale. Desigur, caracteristicile unei anumite aplicații în curs de dezvoltare vor dicta alegerea mod potrivit compararea șirurilor de caractere.

Clasa String oferă cel mai mult metode diferite comparații de șiruri care sunt enumerate în tabelul de mai sus. Cea mai versatilă dintre ele este metoda Compare(). Vă permite să comparați două șiruri în întregime sau parțial, diferențiate de majuscule sau minuscule, într-un mod de comparație determinat de parametrul tip StringComparison, precum și informațiile culturale furnizate de parametrul tip CultureInfo.

Acele supraîncărcări ale metodei Compare() care nu conțin un parametru de tip StringComparison efectuează o comparație a șirurilor de caractere care ține seama de majuscule și cultură. Și în acele variante supraîncărcate care nu conțin un parametru de tip CultureInfo, informațiile de cultură sunt determinate de mediul de rulare curent.

Tipul StringComparison este o enumerare care definește valorile prezentate în tabelul de mai jos. Folosind aceste valori, puteți organiza o comparație de șiruri care se potrivește nevoilor dvs. aplicație specifică. Prin urmare, adăugarea unui parametru de tip StringComparison extinde capacitățile metodei Compare() și ale altor metode de comparare, cum ar fi Equals(). De asemenea, face posibilă specificarea fără ambiguitate a modului în care vor fi comparate șirurile.

Din cauza diferențelor dintre comparațiile de șiruri sensibile din punct de vedere cultural și comparațiile ordinale, este important să fii cât mai precis posibil în acest sens.

Valori definite în enumerarea StringComparison
Sens Descriere
CurrentCulture Compararea șirurilor se face folosind setările curente de cultură
CurrentCultureIgnoreCase Compararea șirurilor este efectuată folosind setările curente de cultură, dar nu ține seama de majuscule și minuscule
InvariantCulture Comparația șirurilor se face folosind cele imuabile, adică date universale despre mediul cultural
InvariantCultureIgnoreCase Comparația șirurilor se face folosind cele imuabile, adică date culturale universale și insensibile la majuscule și minuscule
Ordinal Compararea șirurilor se realizează folosind valorile ordinale ale caracterelor din șir. În acest caz, ordinea lexicografică poate fi încălcată, iar convențiile adoptate într-un anumit mediu cultural sunt ignorate.
OrdinalIgnoreCase Compararea șirurilor se realizează folosind valorile ordinale ale caracterelor din șir, dar nu ține seama de majuscule și minuscule

În ambele cazuri, metoda Compare() returnează o valoare negativă dacă primul șir comparat este mai mic decât al doilea; o valoare pozitivă dacă primul șir comparat este mai mare decât al doilea; și în final zero dacă ambele șiruri comparate sunt egale. Deși metoda Compare() returnează zero dacă șirurile comparate sunt egale, în general este mai bine să folosiți metoda Equals() sau operatorul == pentru a determina dacă șirurile de caractere sunt egale.

Faptul este că metoda Compare() determină egalitatea șirurilor comparate pe baza ordinii lor de sortare. De exemplu, dacă șirurile sunt comparate cultural, ambele șiruri pot fi aceleași în ordinea lor de sortare, dar nu sunt în esență egale. În mod implicit, egalitatea șirurilor este determinată în metoda Equals(), pe baza valorilor ordinale ale caracterelor și nu cultural. Prin urmare, în mod implicit, ambele șiruri sunt comparate în această metodă pentru egalitate absolută, caracter cu caracter, similar cu modul în care se face în operatorul ==.

În ciuda versatilității mari a metodei Compare(), pentru o simplă comparație ordinală a șirurilor de caractere, este mai ușor să utilizați metoda CompareOrdinal(). În cele din urmă, rețineți că metoda CompareTo() compară doar șirurile într-o manieră sensibilă din punct de vedere cultural.

Următorul program demonstrează utilizarea metodelor Compare(), Equals(), CompareOrdinal() și a operatorilor == și != pentru a compara șirurile de caractere. Rețineți că primele două exemple de comparație demonstrează clar diferențele dintre comparațiile de șiruri sensibile din punct de vedere cultural și comparațiile ordinale în limba engleză:

Utilizarea sistemului; Exemplu de clasă ( static void Main() ( șir str1 = "alfa"; șir str2 = "Alfa"; șir str3 = "Beta"; șir str4 = "alfa"; șir str5 = "alfa, beta"; rezultat int; / / Mai întâi, demonstrați diferențele dintre compararea șirurilor sensibile la cultură și rezultatul comparației ordinale = String.Compare(str1, str2, StringComparison.CurrentCulture); Console.Write("Compararea șirurilor sensibile la cultură: "); if (rezultat 0 ) Console .WriteLine(str1 + " este mai mare decât " + str2); altfel Console.WriteLine(str1 + "este " + str2); rezultat = String.Compare(str1, str2, StringComparison.Ordinal); Console.Write("Comparație ordinală linii: "); dacă (rezultatul 0) Console.WriteLine(str1 + " este mai mare decât " + str2); altfel Console.WriteLine(str1 + "este egal cu " + str4); // Utilizați rezultatul metodei CompareOrdinal() = String.CompareOrdinal( str1, str2); Console.Write("Comparați șirurile folosind CompareOrdinal():\n"); dacă (rezultat 0) Console.WriteLine(str1 + " este mai mare decât " + str2); altfel Console. WriteLine(str1 + "este egal cu " +str4); Console.WriteLine(); // Determinați egalitatea șirurilor folosind operatorul == // Aceasta este o comparație ordinală a șirurilor de caractere if (str1 == str4) Console.WriteLine(str1 + " == " + str4); // Detectează inegalitatea liniilor folosind operatorul != if(str1 != str3) Console.WriteLine(str1 + " != " + str3); if(str1 != str2) Consola.WriteLine(str1 + " != " + str2); Console.WriteLine(); // Efectuați o comparație ordinală de șiruri care nu ține seama de majuscule, folosind metoda Equals() if(String.Equals(str1, str2, StringComparison.OrdinalIgnoreCase)) Console.WriteLine("Compararea șirurilor folosind metoda Equals() cu parametrul " + "OrdinalIgnoreCase : \n" + str1 + " este egal cu " + str2); Console.WriteLine(); // Comparați părți ale șirurilor de caractere if(String.Compare(str2, 0, str5, 0, 3, StringComparison.CurrentCulture) > 0) ( Console.WriteLine("Compararea șirurilor pe baza culturii curente:" + "\n3 primele caractere a șirului " + str2 + " este mai mare decât primele 3 caractere ale șirului " + str5); ) ) )

Rularea acestui program produce următorul rezultat:

Declarații cu șiruri

Un șir în limbajul C este o matrice unidimensională de caractere, ultimul element al căruia este caracterul de sfârșit de linie - zero (un șir terminat cu nul, adică șir terminat cu NULL).

Anunţ variabilă de tip Un șir în C este posibil în trei moduri, dintre care două inițializează șirul în momentul declarației.

Prima cale:

Declarații de matrice de caractere (nu uitați să adăugați spațiu pentru nulul final):

Caractere;

A doua cale:

Atribuiți unei variabile șir o valoare inițială (în acest caz, compilatorul poate calcula însuși lungimea șirului):

Char s = „Exemplu de inițializare șir”;

În dreapta semnului de atribuire este o constantă șir. Un zero ('\0') este adăugat automat la sfârșitul șirului. Constantele șirurilor de caractere sunt plasate într-o clasă de stocare statică.

A treia cale:

O indicație implicită că este utilizată o matrice. În partea stângă a semnului de atribuire, este indicat un indicator către simbol:

Char *s="A doua opțiune de inițializare";

Variabila s va fi un pointer către acel loc în memorie cu acces aleator, unde se află constanta șirului. Această formă de notație are o potențială eroare prin aceea că un pointer către un caracter este adesea denumit șir. Intrarea de mai jos este doar un indicator către un caracter, deoarece nu există spațiu pentru șir:

Char*s;

Introducerea unui șir de la dispozitivul de intrare standard (tastatură)

Există un set de funcții pentru lucrul cu șiruri. Pentru intrarea de la dispozitivul de intrare standard (tastatură), funcțiile de bibliotecă din modulul de intrare/ieșire standard sunt cel mai des utilizate: scanfȘi devine.

Pentru a introduce un șir folosind funcția scanf, folosește formatul « %s» , și rețineți că semnul adresei nu este folosit înaintea identificatorului de rând « & » , deoarece o matrice unidimensională este deja reprezentată printr-un pointer către începutul său:

scanf("%s", s);

Funcţie devine() citește caractere până când ajunge la un caracter newline. Funcția acceptă toate caracterele până la, dar fără a include caracterul de nouă linie. Un zero final ('\0') este adăugat la sfârșitul șirului. Funcţie devine() pune o secvență de caractere citite de la tastatură într-un parametru șir și returnează un pointer către acel șir (dacă operația a avut succes) sau NULL (în cazul unei erori). În exemplul de mai jos, după finalizarea cu succes a operațiunii, pe ecran vor fi afișate două linii identice:

#include int main() ( char s; char *p; p=gets(s); printf(" \n Șirul %s introdus. ",s); if (p) printf(" \n Șirul %s introdus. ", p); returnează 0;)

În treacăt, observăm că funcția gets este adesea folosită pentru a introduce orice date de la tastatură ca șir în scopul conversiei ulterioare de către funcția sscanf în formatul dorit sau pentru analiza preliminară a datelor de intrare, de exemplu:

#include #include #include int main() (car s; int x, err; do (printf(" \n Introduceți un număr întreg -> "); gets(s); err=sscanf(s, "%d",&x); if (err !=1) printf(" \n Eroare de intrare. "); ) while (err!=1); printf("\n Întregul introdus -> %d", x); return 0; )

Imprimarea șirurilor la ieșirea standard (ecranul monitorului)

Pentru a ieși linii către dispozitiv standard ieșire (monitor ecran) pot fi utilizate două funcții printfȘi pune. În funcția printf, „%s” este transmis ca format. Comoditatea utilizării acestei funcții constă în faptul că, pe lângă șir, puteți afișa imediat date de alte tipuri. caracteristică caracteristică pune este că după ce linia este scoasă, trecerea la următoarea linie are loc automat.

Funcții șiruri

Pentru a converti șiruri în limbajul C, este furnizată biblioteca de șiruri. Fiecare dintre funcții are propriul format de înregistrare (prototip).

Cele mai utilizate funcții sunt discutate în acest articol. - citit

Un exemplu de programe (listări) care lucrează cu șiruri

»Agenția SEO de încredere din India poate crește veniturile întreprinderilor mici

80% utilizatori caută pe Google și alte motoare de căutare înainte de a face o achiziție și peste 50% dintre întrebările generate prin motoarele de căutare sunt convertite. Aceste două statistici demonstrează importanța optimizării pentru motoarele de căutare. Există multe statistici și fapte ca atare care arată clar: orice afacere la scară mică, mijlocie sau mare are nevoie de servicii SEO profesionale. Întreprinderile mici și startup-urile se confruntă adesea cu probleme bugetare. Ei pot lua ajutorul oricărei agenții SEO de încredere din India pentru a obține cel mai bun serviciu SEO în bugetul lor pentru a-și crește veniturile.
Căutarea are un impact mare asupra minții consumatorilor. Conform diverselor statistici împărtășite de experții majori în optimizarea motoarelor de căutare pe diverse site-uri web autorizate, cum ar fi Search Engine Land, Moz, SEO Journal, Digital Marketers India, Hubspot etc. SEO captează majoritatea clienților potențiali. De asemenea, clienții potențiali care provin din rezultatele căutării organice au o rată de conversie mai mare. Aceste statistici și comportamentul consumatorilor arată mai clar că cel mai bun serviciu SEO nu este un lux, ci o necesitate pentru orice afacere.
Pentru a ocoli concurența și pentru a crește creșterea afacerii, fiecare organizație trebuie să utilizeze serviciile de optimizare pentru motoarele de căutare. Marile branduri pot investi suficienți bani pentru serviciul expert SEO oferit de o companie SEO de top sau un specialist SEO, dar proprietarii de afaceri mici fac adesea compromisuri cu privire la calitatea acestui serviciu din cauza bugetului mai mic. Este un fapt greu că afacerile mici și startup-urile ajung să părăsească oportunitățile care pot fi create cu serviciul SEO profesional sau să folosească un serviciu SEO ieftin, care nu dă rezultate pozitive.
Proprietarii de afaceri mici și startup-urile pot beneficia de servicii SEO profesionale chiar și în bugetul limitat. Cea mai bună soluție este găsirea unei companii SEO de încredere cu sediul în India. În India, există mulți experți SEO care lucrează cu agenția de marketing digital și oferă cele mai bune servicii din industrie. Îți pot oferi serviciile SEO necesare în bugetul tău. Salariile pot fi negociate cu o agenție SEO din India pentru a obține servicii mai bune la tarife mai mici. Cu toate acestea, nu vă îndrăgostiți de un serviciu SEO ieftin, care taxează mai puțin și promite că veți oferi mai mult, deoarece expertiza vine pe propriile lor costuri. Trebuie să vedeți portofoliul sau să puneți întrebări adecvate înainte de a contracta o companie pentru afacerea dvs.
Experții SEO din India sunt calificați cu cele mai bune practici de optimizare pentru motoarele de căutare. De asemenea, există unii specialiști SEO în India, cum ar fi Ash Vyas, care se specializează în crearea celei mai bune strategii de optimizare pentru motoarele de căutare pentru o afacere cu bugetul declarat. Profesioniștii SEO vor crea un plan clar și, de asemenea, vor împărtăși care pot fi rezultatele așteptate. În acest fel, puteți fi bine conștienți de investiția și rentabilitatea dvs. Acest lucru ajută la luarea unei decizii de afaceri mai bune.
O idee bună este să găsiți și să contractați o companie SEO de încredere din India, care să ofere cele mai bune servicii SEO cât mai curând posibil. De asemenea, puteți începe cu un buget mic și activități limitate pentru a începe să vă indexați paginile web și să vă îmbunătățiți cuvintele cheie în motoarele de căutare. Nu așteptați momentul perfect sau o zi când veți avea mii de dolari pentru a investi în cele mai bune servicii SEO. Începerea devreme vă va ajuta să obțineți rezultate mai rapide atunci când puteți deveni agresiv cu abordarea dvs. de marketing. O companie SEO de încredere cu sediul în India vă va ajuta să vă definiți planurile actuale și viitoare pentru a obține rezultate bune. Mai multe pagini indexate au sporit clasamentele și marca credibilă a afacerii tale realizate cu practici SEO profesionale continue vor dubla întrebările, afacerile și veniturile. Orice afacere mică poate începe cu investiții de două cifre în serviciile profesionale SEO. Există multe agenții SEO în India care oferă un buget redus, dar rezultă din servicii de optimizare a motoarelor de căutare.

sondaje din exil

  • CraigWew

    12.04.2018

    »Importanța stabilirii raportului cu clientul în domeniul imobiliar și vânzări generale

    Importanta stabilirii unui raport cu clientul.
    Stabilirea relației cu un client trebuie să fie câștigată și trebuie abordată ca o parte integrantă a procesului de vânzare.
    Pentru a face ca un client și pe tine însuți să relaționați pe o bază reală, unul la unul, implică două lucruri!
    În primul rând, va trebui să fii conștient și să fii acolo! În al doilea rând, trebuie să înțelegeți că există două etape diferite care vor avea loc în timpul acestui proces.
    A-Fii acolo-ce înseamnă asta?
    o Majoritatea oamenilor nu ascultă cu adevărat o altă persoană în timp ce vorbește. În general, ei sunt atât de ocupați să formuleze următorul răspuns sau afirmație încât nu au putut să asculte cu adevărat.
    o Dacă asta sună ca tine, a fi acolo înseamnă taci și ascultă!
    B-Care este prima sau etapa inițială?
    o În general, aveți doar câteva minute pentru a vă stabili în mintea clienților ca cineva cu care doresc să aibă de-a face.
    o Când aveți îndoieli, este mai bine să puneți mai întâi întrebări care să-i atragă și să vorbească despre ei înșiși.
    o De asemenea, este întotdeauna sigur să arăți ca un profesionist - nu mă refer la stoic sau sec, ci la cineva care știe ce face și vorbește și arată rolul.
    C-Alte etape
    o Pe măsură ce timpul trece, prin conversații și întrebări pe care le vor avea, fie îți vei stabili capacitatea, fie nu.
    o Fiți conștienți de faptul că probabil că vă vor măsura pentru o perioadă. Vestea bună este că, la un moment dat, dacă ați reușit să stabiliți un raport, ei se vor relaxa și vă puteți concentra amândoi pe găsirea sau vânzarea casei.
    Ce altceva mă poate ajuta să dezvolt relația?
    o Încercând să înțeleagă diferite tipuri de personalitate și apoi spunând și punând întrebările potrivite.
    o Dacă aveți o relație bună (ajungeți la aceeași lungime de undă cu clientul), atunci vânzarea s-a încheiat practic, acum este doar o chestiune de a găsi casa potrivită sau de a completa documentele de listare.
    Dar diferitele personalități
    o Deoarece aceasta nu este o carte despre psihiatrie, deocamdată înțelegeți doar două tipuri principale.
    o Există oameni introvertiți și extrovertiți.
    o Știi tipul. Gândește-te la trei persoane pe care le cunoști și care se potrivesc fiecărei clasificări.
    Dar limbajul corpului și modelele de vorbire?
    o Dacă vorbesc repede sau încet, încercați să le imitați modelele de vorbire.
    o Dacă vorbesc tare sau încet, procedați la fel. Se aplecă înainte sau înapoi?
    o Inutil să spun că există o mulțime de cărți scrise pe acest subiect. Fiți conștienți de faptul că este un factor important, mai ales când stați într-o sală de conferințe sau acasă discutând o afacere de 400.000 USD.
    Dezvoltarea raportului este o abilitate care poate fi învățată și îmbunătățită.
    o Cu toții am experimentat un agent de vânzări care ne-a vândut ceva și totuși nu am simțit că suntem vânduți. Motivul este că el sau ea te-a făcut să te simți confortabil acolo unde ai avut încredere în ei.
    Cum dezvoltăm relația?
    o Folosește-ți ochii și urechile și pune întrebări. a explica
    o Folosește ochii:
    o Uită-te la rochia lor - la mașina lor - la bunurile lor personale și mă refer cu adevărat la ele și descifrează ce îți spune asta despre ei.
    o Folosește urechile:
    o Ascultă ce spun ei și pune întrebări pentru a ajunge la fundul adevăratei lor MOTIVAȚII!
    Acum, în timpul acestei conversații, probabil că vor fi unul sau două lucruri pe care le vei descoperi pe care le ai în comun cu ei. (Familie, zone geografice, pescuit etc.) Când întâlniți un teren comun, spuneți-le că sunteți familiarizat și apoi acordați-vă un minut pentru a discuta cu ei.
    Care este Scopul?
    o Odată ce vă acceptă ca unul dintre ei, sunteți în măsură să aveți cu adevărat o experiență grozavă în vânzare, deoarece acum lucrați împreună, apoi ca o echipă - nu mai sunteți vânzătorul, vă aflați acum într-o poziție de consilier .
    o Amintiți-vă, clientul fie vă va permite sau nu vă va permite să intrați în lumea lui. Dacă înțelegi acest lucru și muncești din greu pentru a deveni empatic cu el/ea, poți câștiga o poziție de încredere. În cele mai multe cazuri, îi veți vedea de fapt relaxându-se (limbajul corpului) atunci când se întâmplă acest lucru, sunteți pe drum.
    o Pentru a ilustra acest lucru, ați ținut vreodată un discurs și ați observat că, pe măsură ce vă conectați în sfârșit cu un membru al publicului, acesta va da din cap în semn de aprobare. Toate aceste lucruri pot părea banale, dar nu sunt.
    În încheiere, dacă poți câștiga încrederea clienților, vânzarea unui produs sau serviciu este mult mai ușoară, iar experiența poate fi plăcută pentru toți cei implicați.
    Amintiți-vă întotdeauna că un Win/Win este cea mai bună situație.

Șiruri în C++

Un șir este o secvență (matrice) de caractere. Dacă într-o expresie apare un singur caracter, acesta trebuie inclus în ghilimele simple. Când este folosit în expresii, șirul este închis în ghilimele duble. Terminatorul de linie este un caracter nul. \0 . În C++, șirurile pot fi descrise folosind simboluri (o matrice de elemente precum char), care ar trebui să ofere un loc pentru a stoca terminatorul de linie.

De exemplu, o descriere a unui șir de 25 de caractere ar arăta astfel:

De asemenea, puteți descrie o matrice de șiruri de caractere:

Este definită o matrice de 3 șiruri de 25 de octeți fiecare.

Pentru a lucra cu pointeri, puteți utiliza ( char *). Adresa primului caracter va fi valoarea inițială a indicatorului.

Luați în considerare un exemplu de declarare și afișare a șirurilor.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

#include „stdafx.h”
#include
folosind namespace std;
int main()
{
setlocale(LC_ALL,"Rus" );
//descrie 3 linii, s3-pointer
caracter s2[ 20 ] , * s3, s4[ 30 ] ;
cout<< «s2=» ; cin >> s2; //introduceți șirul s2
cout<< «s2=» << s2<< endl;
//scrieți în s3 adresa șirului în care este stocat s4. Acum în variabile
//(pointerii) s3 și s4 stochează valoarea aceleiași adrese
s3=s4;
cout<< «s3=» ; cin >>s3; //șir de intrare s3
//Ieșire liniile s3 și s4 pe ecran, deși ca urmare a atribuirii s3=s4;
//acum s3 și s4 sunt la fel
cout<< «s3=» << s3<< endl;
cout<< «s4=» << s4<< endl;
sistem(„pauză”);
returnează 0;
}

Rezultatul programului:

Dar trebuie remarcat faptul că, dacă utilizatorul introduce cuvinte separate prin spațiu într-o variabilă, programul va funcționa diferit:

Ideea este că funcția cin intră în linii până la spațiul întâlnit. O funcție mai generală este getline.

cin.getline(char*s, int n);

Conceput pentru a introduce un șir de la tastatură s cu spații, nu ar trebui să fie mai mult de n personaje. Prin urmare, pentru introducerea corectă a liniilor care conțin un spațiu, este necesar să se înlocuiască în programul nostru cin>>s pe cin.getline(e, 80).

Operații pe șiruri

Un șir poate fi procesat ca o matrice de caractere folosind algoritmi de procesare a matricei sau folosind funcții speciale de procesare a șirurilor, dintre care unele sunt enumerate mai jos. Pentru a lucra cu aceste linii, trebuie să includeți biblioteca cstring.

Pentru a converti un număr într-un șir, puteți utiliza funcția sprintf din bibliotecă stdio.h.

Câteva funcții pentru lucrul cu șiruri de caractere:

Funcție Prototip Descrierea funcției
size_t strlen(const char *s) calculează lungimea șirului s în octeți.
char *strcat(char *dest, const char *scr) adaugă șirul src la sfârșitul șirului dest, termenul rezultat este returnat ca rezultat
char *strcpy(char *dest, const char *scr) copiează șirul scr în locația de memorie indicată de dest
char strncat(char *dest, const char *dest, size_t maxlen) adaugă șirul de caractere maxlen al șirului src la sfârșitul șirului dest
char *strncpy(char *dest, const char *scr, size_t maxlen) copiază caracterele maxlen ale șirului src în locația de memorie indicată de dest
int ctrcmp(const char *s1, const char *s2) compară două șiruri în ordine lexicografică, ținând cont de diferența dintre literele mari și mici, funcția returnează 0 dacă șirurile sunt aceleași, returnează -1 dacă s1 este în ordine alfabetică înainte de s2 și 1 în caz contrar.
int strncmp(const char *s1, const char *s2, size_t maxlen) compară caracterele maxlen a două șiruri în ordine lexicografică, funcția returnează 0 dacă șirurile sunt aceleași, returnează -1 dacă s1 este în ordine alfabetică înainte de s2 și 1 în caz contrar.
dublu atof(const char *s) convertește un șir într-un număr real, în cazul conversiei nereușite, se returnează numărul 0
atol lung (const char *s) convertește șirul în întreg lung, returnează 0 dacă conversia eșuează
char *strchr(const char *s, int c); returnează un pointer la prima apariție a unui caracter c la linia indicată s. Dacă simbolul c nu a fost găsit, returnează NULL
char *strupr(char *s) convertește caracterele șirului indicat de s în caractere majuscule și apoi îl returnează

tipul de date șir

Pe lângă lucrul cu șiruri de caractere ca o matrice de caractere, C++ are un tip de date special şir. Pentru a introduce variabile de acest tip, puteți utiliza cin, sau o funcție specială getline.

getline(cin, s);

Aici s- numele variabilei de tip de intrare şir.

Când declarați o variabilă de acest tip, puteți atribui imediat o valoare acestei variabile.

șir var(e);

Aici var- numele variabilei, s- constantă de șir. Ca rezultat al acestei declarații, este creată o variabilă var tip şir, iar valoarea constantei șir este scrisă în ea s. De exemplu,

stringv("Bună ziua");

Se creează un șir v, în care este scrisă valoarea Buna ziua.

Acces la i-a element șir s tip şir efectuate într-un mod standard si]. Deasupra liniilor ca şir se definesc urmatoarele operatii:

  • atribuiri, de exemplu s1=s2;
  • concatenarea șirurilor (s1+=s2 sau s1=s1+s2) - adaugă șirul s2 la șirul s1, rezultatul este stocat în șirul s1, un exemplu de concatenare a șirurilor:
  • comparații de șiruri bazate pe ordinea lexicografică: s1=s2, s1!=s2, s1 s2, s1<=s2, s1>=s2 - rezultatul va fi o valoare booleană;

La procesarea șirurilor ca şir poti folosi urmatoarele functii:

  • s.substr(poz, lungime)- returnează un subșir dintr-un șir s, începând de la număr poz lung lungime personaje;
  • s.gol()- returnează adevărat dacă șirul s gol, fals altfel;
  • s.inserare(poz, s1)- introduceți o linie s1într-o sfoară s, incepand de la pozitie poz;
  • s.eliminare (poz, lungime)- îndepărtează dintr-un șir s subșir lungime lung poz personaje;
  • s.găsește (s1, poziție)- returnează numărul primei apariții a unui șir s1într-o sfoară s, căutarea începe de la număr poz, parametru poz poate lipsi, caz în care căutarea începe de la începutul șirului;
  • s.findfirst(s1, pos)- returnează numărul primei apariții a oricărui caracter dintr-un șir s1într-o sfoară s, căutarea începe de la număr poz, care poate lipsi.

Limba rusă pentru șiruri

Cred că ați observat deja că atunci când scoateți litere rusești, în consolă apar caractere „stânga”. Pentru a evita această neînțelegere, trebuie să utilizați o funcție terță parte CharToOemA. Conectarea bibliotecii ferestre.h, este necesar pentru ca funcția noastră să poată converti șiruri de caractere într-o codificare diferită. De asemenea, avem nevoie de o matrice suplimentară de caractere. Codul sursă al programului va arăta astfel:

1
2
3
4
5
6
7
8
9
10
11
12
13
14

#include „stdafx.h”
#include
#include
folosind namespace std;
int main()
( setlocale(LC_ALL,"Rus" );
caracter s[ 255 ] = ( „Trebuie să fiu transformat”} ;
char * pre= new char [ 255 ] ;
CharToOemA(s, pre) ; //transforma
cout<< s;
şterge pre;
system("pause>>void");
returnează 0;
}

Metoda tocmai descrisă este destul de incomod. Dar există o soluție mai simplă la problema „rusului”. După cum puteți vedea, programul folosește funcția setlocale(); în schimb, este mai convenabil să scrieți următoarea construcție în funcția principală.

  • Serghei Savenkov

    un fel de recenzie „rare”... parcă s-ar grăbi undeva