ho una stringa A con all'interno "alb"
poi ho una stringa B con all'interno "albero"
come faccio a capire che la stringa B inizia con la stringa A?
ho una stringa A con all'interno "alb"
poi ho una stringa B con all'interno "albero"
come faccio a capire che la stringa B inizia con la stringa A?
codice:const char *stringToScan = "albero"; const char *stringToMatch = "alb"; printf("%s %s contenuta in %s\n", stringToMatch, strstr(stringToScan, stringToMatch) ? "è" : "non è", stringToScan);
la classe string delle STL ha una funzione membro find che fa proprio quello che chiedi.
ciaocodice:string str ("albero"); string str1 ("alb"); size_t found; // ci sono differenti versioni, eccone una found = str.find(str1); if ( found != string::npos ) cout << "prima occorrenza di \"alb\" è alla posizione : " << int(found) << endl;
sergio
va bene ti ringrazio però devo capire se la stringa inizia uguale... non se c'è dentro alla parola a caso...Originariamente inviato da menphisx
codice:const char *stringToScan = "albero"; const char *stringToMatch = "alb"; printf("%s %s contenuta in %s\n", stringToMatch, strstr(stringToScan, stringToMatch) ? "è" : "non è", stringToScan);
cioè
se digito avo
deve cercarmi le parole che iniziano per avo
non quelle che hanno dentro la parola avo.. tipo cavolo...
capito?
---EDITATO---
Prova così:Originariamente inviato da DragonFire
va bene ti ringrazio però devo capire se la stringa inizia uguale... non se c'è dentro alla parola a caso...
cioè
se digito avo
deve cercarmi le parole che iniziano per avo
non quelle che hanno dentro la parola avo.. tipo cavolo...
capito?
codice:const char *stringToScan = "albero"; const char *stringToMatch = "alb"; printf("%s %s %s\n", stringToScan, strstr(stringToScan, stringToMatch) == stringToScan ? "inizia" : "non inizia", stringToMatch);
codice:const char *stringToScan = "albero"; const char *stringToMatch = "alb"; if(strncmp(stringToScan,stringToMatch,strlen(stringToMatch))==0) cout<<stringToScan<<" inizia con "<<stringToMatch; else cout<<stringToScan<<" non inizia con "<<stringToMatch;
Amaro C++, il gusto pieno dell'undefined behavior.
giàOriginariamente inviato da MItaly
codice:const char *stringToScan = "albero"; const char *stringToMatch = "alb"; if(strncmp(stringToScan,stringToMatch,strlen(stringToMatch))==0) cout<<stringToScan<<" inizia con "<<stringToMatch; else cout<<stringToScan<<" non inizia con "<<stringToMatch;
Dimenticavo, con le string della STL:
.codice:string stringToScan ("albero"); string stringTomatch ("alb"); if(stringToScan.compare(stringToMatch,0,stringToMatch.length())==0) cout<<stringToScan<<" inizia con "<<stringToMatch; else cout<<stringToScan<<" non inizia con "<<stringToMatch;
Amaro C++, il gusto pieno dell'undefined behavior.
grazie
già che ci sono chiedo due cose..
1)
io vorrei che dopo aver scritto qualcosa.. cliccando invio mi parta un processo, cliccando invece ad esempio ctrl me ne parta un altro
com'è possibile?
2) è possibile far un printf di una stringa e far in modo che poi l'utente possa interagire su tale stringa... perchè se faccio printf("ciao"); poi l'utente si trova a schermo ciao.. ecco vorrei che se volesse potesse tornar indietro e cancellare ciao