Ciao a tutti,
Allego il codice di un esercizio, dove, dopo aver popolato una matrice 2x2 di caratteri, con una funzione la leggo e ne ricavo una stringa di 4 caratteri.
Il programma funziona correttamente. Solo che non mi è chiaro quanto segue:
1) Se con un ciclo leggo i singoli elementi della stringa, ottengo visualizzata la stringa per intero
2) Se invece faccio una cout della stringa, mi viene visualizzata una sequenza di robe strane.
Allora la mia domanda è: in C++ è possibile usare una stringa così come è, senza dover passare da un ciclo di lettura cout dei singoli elementi?
Ho bisogno di chiarirmi con urgenza questo punto, perchè ho la necessità di confrontare degli elementi. Cioè, se ad esempio ho una matrice 2x2 come nel mio caso e una stringa già assegnata di 4 caratteri, creandomi una stringa con gli elementi della matrice posso dire, che so:
codice:
if (stringaDaMatrice == miaStringa) etc..
o questo è sintatticamente scorretto e bisogna usare un altra soluzione?
Ecco il testo del programma di prova:
codice:
#include <iostream>
using namespace std;
#define DIM 2
void compilaMatrice (char [][DIM], int);
void creaStringa (char [] [DIM]);
int main()
{
char Matrice2x2[ DIM][DIM];
compilaMatrice(Matrice2x2, DIM);
cout << "Creo dalla Matrice 2x 2 una stringa lunga 4 caratteri";
creaStringa(Matrice2x2);
return 0;
}
void compilaMatrice(char mat[][DIM], int dim)
{
cout << "Popolare la Matrice 2x2" << endl;
for (int i=0; i<DIM; i++)
for (int j=0; j<DIM; j++)
{
cin >> mat[i][j];
}
return;
}
void creaStringa (char mat[] [DIM])
{
char tmpStringa [4];
int k;
k=0;
for (int i=0; i<DIM; i++)
for (int j=0; j<DIM; j++)
{
tmpStringa[k] = mat [i] [j];
k++;
}
cout << endl;
for (int k=0; k<4; k++)
cout << tmpStringa[k];
cout << endl;
cout << tmpStringa;
return;
}
Spero che qualcuno sia così gentile, come sempre del resto, di darmi una risposta.
Ciao