Domanda

Sono nuovo di codice HTML e so HTML ha alcuni caratteri riservati per il suo utilizzo e visualizza anche alcuni personaggi dal loro codice di carattere. Per esempio -:

Œ  is   Œ
©  is   ©
®  is    ®

Ho il codice HTML in std :: string. come posso decifrare nella loro forma attuale e sostituire da std :: string? c'è qualche libreria con sorgente disponibile o può essere fatto utilizzando le macro preprocessore?

È stato utile?

Soluzione

Ti consiglio di utilizzare un po 'di parser HTML / XML che può fare automaticamente la conversione per voi. Parsing del codice HTML in modo corretto a mano è estremamente difficile. Se ti ostini a farlo da soli, Boost biblioteca String Algoritmi fornisce funzioni di sostituzione utili.

Altri suggerimenti

Œ  is   Œ

No, non è. Œ è 'LINEA PARZIALE INDIETRO'. Le entità numeriche corrette per Œ sono Œ e Œ.

Un metodo per le entità numeriche sarebbe quella di utilizzare un'espressione regolare come &#([0-9]+);, afferrare il valore numerico e convertirlo al carattere ASCII (probabilmente con sprintf in C ++).

Per le entità con nome si avrebbe bisogno di costruire una mappatura. Si potrebbe probabilmente fare una semplice stringa sostituire da convertire in numeri, quindi utilizzare il metodo di cui sopra. W3C ha un tavolo qui: http: //www.w3. org / TR / WD-html40-970708 / sgml / entities.html

Ma se si sta cercando di leggere o analizzare un po 'di HTML in una stringa, è necessario utilizzare un parser HTML. Ricerca per le tante domande sul SO.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top