|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Mar 2010
Città: Roma
Messaggi: 132
|
[Visual C++] Problema lettere maiuscole e minuscole
Ciao a tutti!
Ho realizzato un programma in visual C++ 2008 ed ho un problemino... In pratica ho inserito un comando che mi dice se leggi due stringhe diverse dai un messaggio di errore. Il problema è che le stringhe non sono diverse ma una è scritta in maiuscolo e l'altra in minuscolo. Come posso ovviare a questo? Grazie in anticipo per una risposta.
__________________
Se devi fare una cosa falla fatta bene... sennò che la fai a fare?! |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Nella versione più semplice:
Codice:
std::string data = “Maiuscole e Minuscole”; std::transform(data.begin(), data.end(), data.begin(), tolower);//o toupper |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Mar 2010
Città: Roma
Messaggi: 132
|
Ma devo creare una funzione che converte da minuscole a maiuscole, oppure se ho la stringa "pippo"e la voglio trasformare in maiuscolo metto tolower(pippo) ed avrò PIPPO?
__________________
Se devi fare una cosa falla fatta bene... sennò che la fai a fare?! |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
tolower è una funzione standard C che converte un singolo carattere in minuscolo, toupper in maiuscolo. |
|
|
|
|
|
|
#5 | |
|
Member
Iscritto dal: Mar 2010
Città: Roma
Messaggi: 132
|
Quote:
Se si il problema è che io ho più stringhe e non solo 2. Grazie tomminno
__________________
Se devi fare una cosa falla fatta bene... sennò che la fai a fare?! |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Be', tomminno ti ha dato il codice per trasformare una stringa singola in maiuscolo: basta applicarla a tutte le stringhe del caso, e poi eventualmente fai il confronto.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Codice:
void ToLower(std::string & data)
{
transform(data.begin(), data.end(), data.begin(), tolower);
}
|
|
|
|
|
|
|
#8 |
|
Member
Iscritto dal: Mar 2010
Città: Roma
Messaggi: 132
|
Ok grazie! Ma transform mi dice identificatore non trovato...che cos'è? Fa parte di una libreria che devo dichiarare? Se si quale?
__________________
Se devi fare una cosa falla fatta bene... sennò che la fai a fare?! |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
|
|
|
|
|
|
#10 |
|
Member
Iscritto dal: Mar 2010
Città: Roma
Messaggi: 132
|
Ok ho fatto la funzione ed ho incluso la libreria. Mi potresti fare un esempio per convertire da pippo a PIPPO?
__________________
Se devi fare una cosa falla fatta bene... sennò che la fai a fare?! |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
|
|
|
|
|
|
#12 |
|
Member
Iscritto dal: Mar 2010
Città: Roma
Messaggi: 132
|
Allora... il problema è che ho questa linea di codice:
if(RemSlashN(RemSpace(ContrCabVec->GetValue(n)->ToString())) != RemSlashN(RemSpace(ContrAEdPVec->GetValue(n)->ToString()))) che vede se le due stringhe sono diverse manda un messaggio di errore. Ma in realtà le due stringhe NON sono diverse ma la prima è scritta in minuscolo e la seconda in maiuscolo e quindi mi da il messaggio di errore. La funzione che mi hai dato te se la inserisco in questo modo : if(RemSlashN(RemSpace(ToLower(ContrCabVec->GetValue(n)->ToString()))) != RemSlashN(RemSpace(ToLower(ContrAEdPVec->GetValue(n)->ToString())))) mi da un messaggio di errore in compilazione e mi dice : Check_Sheet::Form1::ToLower': impossibile convertire il parametro 1 da 'System::String ^' a 'std::string &' Appunto ti ho chiesto un esempio stupido su come applicare la funzione che mi hai dato...
__________________
Se devi fare una cosa falla fatta bene... sennò che la fai a fare?! |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Ah beh quello non è C++, ma C++/CLI.
Chissà quando mai finirà questa confusione tra 2 linguaggi differenti. Hai il metodo ToUpper e ToLower sulle stringhe. Ma già che sei in .NET esiste il metodo String::Compare |
|
|
|
|
|
#14 | |
|
Member
Iscritto dal: Mar 2010
Città: Roma
Messaggi: 132
|
Quote:
if(RemSlashN(RemSpace(ToLower(ContrCabVec->GetValue(n)->ToString()))) != RemSlashN(RemSpace(ToLower(ContrAEdPVec->GetValue(n)->ToString())))->ToUpper()) e non mi da più l'errore! Grazie tomminno sei sempre il number1!
__________________
Se devi fare una cosa falla fatta bene... sennò che la fai a fare?! |
|
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Occhio che hai messo un ToUpper di troppo!
|
|
|
|
|
|
#16 |
|
Member
Iscritto dal: Mar 2010
Città: Roma
Messaggi: 132
|
Perchè? Così funziona alla grande!
__________________
Se devi fare una cosa falla fatta bene... sennò che la fai a fare?! |
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
|
|
|
|
|
|
#18 | |
|
Member
Iscritto dal: Mar 2010
Città: Roma
Messaggi: 132
|
Quote:
Hai perfettamente ragione! Però sul programma l'ho scritto senza i ToLower...quindi funziona!
__________________
Se devi fare una cosa falla fatta bene... sennò che la fai a fare?! |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:37.












Hai perfettamente ragione! Però sul programma l'ho scritto senza i ToLower...quindi funziona!








