View Full Version : [c++]Concatenare due stringhe
Vorrei concatenare due stringhe in C++ senza usare <string>
wchar_t s1 = _T("\\con\\");
wchar_t s2 = _T(\\test1\\prova.mio");
int dimADL = wcslen(s1);
int dimDic = wcslen(s2);
wchar_t* s3 = new wchar_t[dimADL + dimDic +1];
wcscat(s3,s1);
wcscat(s3,s2);
Cosa ho sbagliato?
BrutPitt
24-04-2009, 13:39
La prima la "copy" e la seconda la "concateni"... visto che s3 non viene "azzerato", non sai cosa contenga.
tomminno
24-04-2009, 14:53
Vorrei concatenare due stringhe in C++ senza usare <string>
Ovvero vuoi usare il C?
Volevo fare quell'operazione senza usare le funzionalità offerte dalla libreria <string>.
il codice che ho scritto prima funziona. M funziona per caso o perché l'ho fatto nel modo giusto? :stordita:
BrutPitt
24-04-2009, 16:39
La funzione "cat", ricerca lo "zero" di una stringa gia' presente, ci si posiziona sopra, e aggiunge la seconda stringa.
Ora, s3, non e' inizializzato... e con un'allocazione dinamica la memoria non viene "pulita", azzerata, da cio' che era presente.
Per cui se hai uno "zero", per caso, nel primo carattere di s3, tutto funziona magicamente... ma se trova un altro tipo di dato non funziona piu' e puo' provocare problemi anche seri, andando a concatenare, sovrascrivere in memoria, un dato a partire dal primo ZERO che incontra... e che non sai quale possa essere... anche OLTRE la memoria da te allocata.
Per cui devi copiare la prima stringa in s3 per assicurare un tipo di dato corretto per la concatenazione, e la seconda stringa la puoi concatenare senza problemi.
(altrimenti annulli il primo carattere di s3, dopo l'allocazione... e lasci le due "cat"... ma e' meno efficiente e "stilisticamente" poco valida, anche se funzionerebbe)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.