[C++] dubbio programma confronto stringhe
è un programma di confrontro stringhe, non risco a capire bene il significato dentro il while in particolare quei '\0':
(s1!='\0' && s2 '\0' )
Cosa significa?
(s1!='\0' && s2 '\0' )
Cosa significa?
#include <iostream> #include <string> #include <ctime> #include <cmath> #include <cstdlib> using namespace std; bool confrontostringhe (string s1, string s2) { int i=0; // se le stringhe sono diverse //allora le stringhe non sonon uguale if (lunghezzastringa(s1) != lunghezzastringa(s2)) return false; while (s1[i]!='\0' && s2 [i]'\0' ) {if (s1 [i]!=s2 [i]) return false; } return true; }
Risposte
Il codice così scritto non ha senso in quanto usa la classe std::string del C++ per i suoi parametri, ma l'implementazione assume che le stringhe siano in realtà degli array di char che terminano con il carattere '\0'. Devi insomma decidere se usare un tipo di stringhe o l'altro e agire di conseguenza. Le due possibili alternative sono le seguenti. Nota che nel caso di array di char non ho calcolato la lunghezza in quanto richiede di iterare su tutta la stringa in cerca di '\0'.
bool compare_str(std::string a, std::string b) { if (a.size() != b.size()) { return false; } for (std::size_t i = 0; i < a.size(); ++i) { if (a[i] != b[i]) { return false; } } return true; } bool compare_cstr(const char a[], const char b[]) { assert(a != NULL && b != NULL); int i; for (i = 0; a[i] != '\0' && b[i] != '\0'; ++i) { if (a[i] != b[i]) { return false; } } // Questa condizione verifica se hanno la stessa lunghezza // Cioè a[i] == '\0' e b[i] == '\0'. return a[i] == b[i]; }