Funzioni per la gestione delle stringhe in C ++




функции strlen (), strcat (), strcpy (), strcmp () в C++

dopo, come ci conosciamo stringhe e array di caratteri in C ++, guardare le funzioni più comuni per lavorare con loro. La lezione sarà completamente costruito in pratica. Vi scrivere i propri programmi-analoghi per il trattamento delle linee e parallelo l'utilizzo di funzioni di libreria standard CString (string.h – nelle versioni più vecchie). Così si sta per presentarsi, come funzionano. Le funzioni della libreria standard CString sono:

  • strlen() – calcola la lunghezza della stringa (numero di caratteri escluso \0);
  • strcat() – Esso combina le stringhe;
  • strcpy() – copia i simboli di una linea all'altra;
  • strcmp() – confronta due stringhe .

E 'certamente non tutte le caratteristiche, solo quelli, che è coperto in articolo.

strlen() (la lunghezza delle parole – lunghezza)

Il nostro programma, che calcola il numero di caratteri per riga:

Per calcolare i caratteri di una stringa di lunghezza indeterminata (l'utente immette essa), abbiamo usato il ciclo mentre – linee 13 – 17. Si passa attraverso tutte le celle della matrice (tutti i caratteri della stringa) alternativamente, partendo da zero. Quando ad un certo ciclo di passo per soddisfare Box ourStr [amountOfSymbol], che memorizza simbolo \0, simboli di pausa del ciclo di busto e aumentare il contatore amountOfSymbol.

Quindi il codice sarà simile, la sostituzione di una sezione di codice in funzione strlen():

Come si può vedere, Questo codice. Non ha bisogno di dichiarare le variabili aggiuntive e utilizzare un ciclo. Il flusso di uscita cout siamo passati nella stringa funzione di – strlen(ourStr). Si suggerisce che la lunghezza della linea e di nuovo al numero di programma. Come nel precedente codice-analogico, simbolo \0 escluso il numero totale di caratteri.

Il risultato è il programma in primo e secondo simile:

функция strlen () в C++

strcat() (concatenamento di parole – composto)

programma, che la fine di una riga, aggiunge la seconda linea. in altre parole – Unisce due linee.

Secondo i commenti nel codice dovrebbe essere tutto chiaro. Qui di seguito, scriviamo un programma per eseguire la stessa azione, ma usando strcat(). In questa funzione, daremo due argomenti (due linee) – strcat(someText1, someText2); . La funzione aggiunge una stringa someText2 alla linea someText1. Allo stesso simbolo ' 0' alla fine someText1 Esso sovrascrive il primo carattere someText2. E aggiunge anche una finale ' 0'

Attuazione della unione di due linee, Utilizzando la funzione standard, Presi una riga di codice nel programma – 14-fila.

risultato:

strcat c++, strcat_s c++

Che cosa dovrebbe prestare attenzione al primo e secondo codice – dimensione del primo carattere dell'array dovrebbe essere sufficiente per la seconda serie di sedi caratteri. Se la dimensione è insufficiente – si può verificare la terminazione anomala del programma, dal momento della registrazione la linea di memoria, che occupa il primo array. per esempio:

In questo caso,, costante strokovaya “Imparare il C ++ c noi!” Esso non può essere scritto nella matrice someText1. Poiché non c'è abbastanza spazio, per tali operazioni.

Se si utilizza una versione recente di ambiente di sviluppo Microsoft Visual Studio, si può verificare il seguente errore:: “errore C4996: 'strcat’: Questa funzione o variabile può essere pericoloso. Considerare l'utilizzo strcat_s anziché. Per disabilitare deprecazione, uso _CRT_SECURE_NO_WARNINGS. Vedere la guida in linea per maggiori dettagli.” Questo perché, che ha sviluppato una nuova versione più sicura della funzione strcat – esso strcat_s. Lei si preoccupa, affinché non vi sia buffer overflow (array di caratteri, che ha prodotto record di seconda linea). Ambiente si prevede di utilizzare una nuova funzione, invece del obsoleto. Ulteriori informazioni su questo può essere sul sito Web MSDN. Questo errore può verificarsi, se si utilizza la funzione strcpy, che sarà discusso sotto.

strcpy() (copia Slovenia – copiatura)

Vendi su di una riga e inserirlo al posto di un'altra riga.

Applicare la libreria di funzioni standard di CString:

Prova a compilare e prima, ed un secondo programma. Si vedrà questo risultato:

strcpy C ++

strcmp() (Slovenia confrontare – confronto)

Questa caratteristica è stata progettata in modo da: Si confronta il carattere di due C-string per carattere. Se le stringhe sono identiche (e simboli e il loro numero) – la funzione restituisce il numero di programma 0. Se la prima riga è più di un secondo – restituisce il numero di programma 1, e se meno, il -1. numero -1 allora, quando la lunghezza delle linee è, ma le linee dei caratteri non corrispondono.

strcmp C ++ programma con strcmp():

strcmp C ++

Condividi sui social network i nostri articoli con i tuoi amici, che ha anche imparare le basi della programmazione in C ++.

Sul nostro sito ha già la possibilità di iscriversi, per ricevere la notifica di nuovi articoli. per iscriversi – inserisci il tuo e-mail qui sotto.

Newsletter nuove lezioni sulla programmazione:

Funzioni per la gestione delle stringhe in C ++
4.3 (86.67%) 12 voti

28 pensieri su "Funzioni per la gestione delle stringhe in C ++

  1. Ciao. Скажите пожалуйста, почему когда объединяем две строки и второму символьному массиву задаем длину массива, per esempio

    , то в этом случае второй массив не объединяется с первым?

    1. Это неправда.
      У вас результат может просто не помещаться в someText1[].
      Увеличьте его размерчего жадничать?
      per esempio: someText1[ 200 ]

  2. Объясните, prego, почему в примере с объединением строк
    int count1 = 0; // для индекса ячейки где хранится ‘\0первой строки
    mentre (someText1[count1] != 0)
    мы пишем “someText1[count1] != 0” e non “someText1[count1] != ‘\0′”?
    Мы же вроде бы ищем элемент окончания символьной строки ‘\0’? При чем здесь ноль?
    Хотя должен заметить, у меня а Коудблоксе работает и с нулем

    1. Потому что запись ‘\0как-раз и означает: byte, численное значение записанное в который равно 0.
      Такие записи эквивалентны.

  3. Уважаемый автор!
    По-моему, в первом примере сравнений строк пропущена директива препроцессору #include

  4. Чета не могу понять
    char xsmibol[2] = {wParam, ‘\0’};
    вот так работает
    ————————–
    А вот так не работает:
    char xsmibol[2];
    xsmibol = {wParam, ‘\0’};

    Говорит 17 27 C:\Users\1\Documents\main1.cpp [Warning] extended initializer lists only available with -std=c++11 or -std=gnu++11
    17 12 C:\Users\1\Documents\main1.cpp [Error] assigning to an array from an initializer list
    37 14 C:\Users\1\Documents\main1.cpp [Error] expected primary-expression before ‘)’ token

    Что я делаю не так ?

Lascia un Commento

L'indirizzo email non verrà pubblicato. i campi richiesti sono contrassegnati *