PDA

Visualizza la versione completa : [C/C++] Sequenze di Escape


GNAWS
14-05-2004, 21:44
E' possibile personalizzare una sequenza di escape?
Vorrei fare in modo che scrivendo: cout << "Pippo \x"; (oppure printf("Pippo \x");) la sequenza di escape '\x' mi venga sostituita con qualcos altro, come succede col '\n' che viene sostituito con "a capo"...
Devo riscrivermi le funzioni di I/O, o esiste un modo per farlo?



PS: Dover processare la stringa prima di mandarla alla funzione non mi va molto a genio... Preferirei esistesse proprio un modo che mi fa aggiungere una sequenza di escape personalizzato.

Xadoom
15-05-2004, 10:27
Credo che devi ridefinire l'operatore di immissione nello stream << creandoti un modo di stampa personalizzato, in c++ puoi farlo.
Ciao :ciauz:

GNAWS
15-05-2004, 21:17
Originariamente inviato da Xadoom
Credo che devi ridefinire l'operatore di immissione nello stream << creandoti un modo di stampa personalizzato, in c++ puoi farlo.
Ciao :ciauz: Dici che basti fare l'overloading dell'operatore "<<"?
C'avevo pensato anch'io... Poi però ho pensato che le sequenze di escape ci sono con tutte le funzioni di IO... Sulle funzioni di IO su files, su sockets, su monitor etc... Ed inoltre ci sono sia su quelle del C++ che usano gli operatori "<<" e ">>", sia su quelle del C che non usano tali operatori...

:ciauz:

Dark Bard
15-05-2004, 21:21
potresti definire una funzione che ti effetui il replace dei caratteri preceduti da \, qualcosa del tipo:

char* _(const char* stringa){
//... effettui il replace
}

...

cout << _("la mia stringa \x speciale") << endl;

GNAWS
16-05-2004, 01:28
Originariamente inviato da Dark Bard
potresti definire una funzione che ti effetui il replace dei caratteri preceduti da \
Originariamente inviato da GNAWS
PS: Dover processare la stringa prima di mandarla alla funzione non mi va molto a genio... Preferirei esistesse proprio un modo che mi fa aggiungere una sequenza di escape personalizzato. ;)
Processare la stringa con una mia funzione sarebbe la soluzione più semplice, e è la prima che mi era venuta in mente...
Ho postato quì per sapere se esiste un metodo migliore...

:ciauz:

Loading