PDA

View Full Version : [c++] std::string.find() e virgolette


kk3z
20-02-2006, 12:57
Con la std::string e la funzione find() sto cercando di prendere il testo fra due virgolette. Il problema è che, dopo aver trovato la posizione della prima virgoletta, cercando la virgoletta di chiusura mi trova la prossima virgoletta di apertura :wtf: l'unica cosa che mi viene in mente è che siano due caratteri differenti... Cerco di fornire più informazioni possibili:
- ho una tastiera italiana
- l'encode dell'editor è quello di default di windows
- compilando con ansi o unicode, il risultato è lo stesso
- la std::string è in realtà "typedeffata" per usare il TCHAR per supportare sia ansi che unicode.
typedef std::basic_string<TCHAR> tstring

Qual'è il problema? Che carattere devo cercare?

alesnoce
20-02-2006, 14:05
Un suggerimento per vedere se le seconde virgolette vengono effettivamente viste come un carattere diverso: dopo aver trovato la posizione delle prime, prendi la sottostringa (posizione+1, string::npos), poi chiama il find(") su questa sottostringa; se ti trova le virgolette di chiusura non è un problema di carattere diverso, altrimenti...boh :rolleyes:
ciao

kk3z
20-02-2006, 14:58
Niente da fare, anche con due sole virgolette (apertura e chiusura), non va. Addirittura sembra trovare le virgolette alla fine del testo, cioè non ritorna string::npos, proprio mi indica la fine della stringa :muro:

Prova tu stesso con il file allegato (mannaggia, non si possono uploadare file c/cpp). Boh :fagiano:

EDIT: ah, sto usando mingw.

Qu@ker
20-02-2006, 15:31
:rolleyes:
Il problema non e' in string::find(), quanto nel fatto
che string::substr() non funziona come credi tu.

kk3z
20-02-2006, 15:35
Porca miseria, subito dopo che ho letto che non funziona come dico io mi sono ricordato che il secondo parametro è la dimensione della sottostringa, non la posizione della fine della sottostringa :D :D
E pensare che l'ho usata 10 volte prima per altri motivi... all'improvviso mi scordo.

Scusat, je suis un pirlòn :D