Lavorare con le stringhe localizzate




prima, è necessario essere in grado di fare con le stringhe localizzate - un personaggio di registrazione costanti ampia localizzato caratteri e di distinguerli da linee convenzionali carbonizzare[]. Per questa linea viene scritto qualificazione previa s L:

Il risultato sarà:

badare, la lunghezza della stringa (numero personaggi) in questo caso, chiaramente meno, rispetto al numero byte assegnato per la stringa (il sistema operativo, il loro atteggiamento può essere diversa da, Mostro in Linux, ma non influenza la tecnica di programmazione).

In tale linea vicino con uguale successo può essere simboli di diversa natura: lingue diverse, speciali simboli matematici, comune in loroke la designazione dell'alfabeto greco (un, e, io, Fr., p, l, F, Oh ...), note musicali, etc.. Come si fa, ovviamente, sapere, altrettanto bene come una parte di stringhe di caratteri di larghezza, con uguale successo, e in grado di soddisfare i caratteri dell'alfabeto latino (tabella principale ASCII), con ogni tale simbolo terrà anche 2 o 4 byte (a seconda degli accordi adottati nel sistema operativo), in contrasto con la solita 1 byte.

Eseguiamo una serie di operazioni con le linee russe, ma scriverli (mentre) in forma tradizionale array carbonizzare:

eseguire:

sembrerebbe, che (quasi) tutto funziona precisamente un libro di testo, e perché abbiamo bisogno di nessun estese stringhe localizzate? ma è ingannevole illusione! Il punto qui è, che alcuni funzioni tradizionali minuscolo (strcat(), strcpy(), strdup(), strstr() et al.) restituirà i risultati corretti. Это потому что они выполняют операции над байтами, byte per byte, senza entrare nella struttura interna di caratteri da copiare.

Ma altre operazioni (e falso risultato strlen() ha chiaramente punti) non funzionerà correttamente: strncpy(), strchr(), strsep(), strtok() et al. e они будут создавать вам очень неожиданные результаты, molto difficile da interpretare. guardiessi come lavorare byte di stringa di inversione, e come distinguere il suo lavoro sulla linea di inglese e russo:

Funziona così, и это определённо non, quello che vi aspettavate di ricevere:

ne questo conclude la nostra discussione sulla possibilità di rappresentare le linee di lingua russa di array tradizionali carbonizzare[] e l'elaborazione delle loro funzioni tradizionali in minuscolo, e completo questo esame produzione: py per guadagnare con le linee russe come un array carbonizzare lattina solo:

e). o quando usiamo le costanti stringa invariati, solo come una linea per il loro input-output invariato;

B). o per il trattamento delle loro funzioni (biblioteca o la propria), che non tengono conto della struttura interna dei caratteri, senza entrare nel è contenutoè tempo, e operare con loro semplicemente come una sequenza di byte insignificante.

in tutte le altrimenti correttaio работа с кириллицей disponibile solo come una vasta gamma di caratteri localizzati wchar_t (con completandom строку широким нулевым символом L’ 0′). Per lavorare con la rappresentazione localizzata di linee di C libreria fornisce largo un insieme di linea caratterizza, tutto simili alle funzioni tradizionali del minuscolo, ma invece del prefisso str nei loro nomi prefisso wcs: wcslen() invece di strlen(), wcsncpy() invece di strncpy() etc.

Vediamo come funziona l'esempio di:

Questa illustrazione è più che sufficiente, vedere funzioni dirette analogie con simboli di manipolazione wchar_t. il, che ha una certa esperienza di lavoro con le stringhe carbonizzare diffondere sforzo IT ampi archi. locale Impostazione della lingua (chiamata setlocale()) O remoti (terminale) - obbligatorio, perché il programma C / C ++ imposta l'impostazione internazionale predefinita “C” (ea storicamente), che consente solo l'output 128 personaggi più giovani la metà dei caratteri ASCII 8-bit.

Nella scrittura illustrato funzione imposta il locale, utilizzato nel sistema operativo predefinito - sto cercando di indovinare, che stiamo sperimentando in lingua russa il sistema installato. Il nuovo standard di lingua (C99) e introduce un nuovo formato per le funzioni di formattazione stringa (printf(), sprintf()) - %ls, Questa stringhe di formato wchar_t[].

Tinternamente, Come con gli array carbonizzare, converte in C ++ da C, libreria C ++ introduce un analogo completa della classe contenitore corda, ma che contengono in loro composizione ampia caratteri localizzati, ed è noto come classe wstring:

Qui, la stringa di output di caratteri localizzati (ws) mosto viene emesso al flusso di output wcout (simili nel significato cout, ma a parte cout).

Nella scrittura illustrato: località::globale( località( “” ) ) - Questa impostazione locale per impostazione predefinita in C ++ modo OOP, simile a, come è stato mostrato in precedenza a guisa di C.

ilsondaggi IO stringhe di caratteri di larghezza (al terminale o un file) separata complicato soggetto, pertanto considerazione sarà rinviata ad una singola nota sull'argomento.

Newsletter nuove lezioni sulla programmazione:

Lavorare con le stringhe localizzate
5 (100%) 1 votazione

Di olio

esperienze pratiche circa lo sviluppo del software 40 anni. Maestro globale Logic società di software internazionale. IBM Developer funziona autore permanente di pubblicazioni. redattore scientifico del computer casa editrice letteratura "Simbolo-Plus", San Pietroburgo.

Lascia un Commento

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