PDA

Visualizza la versione completa : [C/C++]: Definizione di stringhe


Nietta
14-08-2006, 18:14
Salve,
sto passando una mia applicazione da VB a C++, senza conoscerlo bene..
La mia attuale difficolta' e' l'inizializzazioe e uso di una matrice stringa.
Le istruzioni VB sono:
dim casecontrollate(8, 8, 2)

una matrice di stringhe a dimensione variabile, che inizializzo con:
For i = 1 To 2
For j = 1 To 8
For k = 1 To 8
casecontrollate(k, j, i) = ""
Next k
Next j
Next i
e che poi nel corso del programma utilizzo con istruzioni del tipo:
casecontrollate(k, j, i) = casecontrollate(k, j, i) & "B1"

Come si puo' fare la stessa cosa con c++?

una definizione del tipo:
char casecontrollate [12][2][8][8]
mi restituisce una matrice di 2x8x8 stringhe di 12 caratteri?

come la posso inizializzare?
Grazie per la risposta!
Nietta

the creator
14-08-2006, 19:48
char casecontrollate [12][2][8][8]
array abbastanza grandicello :zizi:

di solito gli array multidimensionali vengono inizializzati tramite dei for
nel tuo caso per esempio per inizializzare tutti i caratteri si potrebbe fare

char casecontrollate [12][2][8][8];
for (int i=0;i<12;i++)
for (int m=0;i<2;m++)
for (int j=0;j<8;j++)
for (int x=0;x<8;x++)
casecontrollate [i][m][j][x]=' ';

PS. un consiglio:
non confrontare il c++ col visual basic
(anche se non lo conosco quelle poche righe di codice mi hanno fatto rabbrividire :prrr: )
e rimpiazza nel tuo cervello il concetto di stringa con quello di array di caratteri ;-)
perchè dopo ti sarà tutto più semplice

Samuele_70
15-08-2006, 10:06
Originariamente inviato da Nietta
...
Come si puo' fare la stessa cosa con c++?

una definizione del tipo:
char casecontrollate [12][2][8][8]
mi restituisce una matrice di 2x8x8 stringhe di 12 caratteri?

come la posso inizializzare?
Grazie per la risposta!
Nietta
Se la lunghezza delle stringhe deve essere di 12 caratteri, devi
dichiarare l'array così :

char casecontrollate[2][8][8][12];

L'ultimo valore rappresenta la lunghezza della stringa.

Esempio di dichiarazione e assegnazione di alcune delle stringhe nell'array :


#include <iostream.h>

int main( void )
{
char casecontrollate[2][8][8][12];

strcpy( casecontrollate[0][0][0], "Ciao ");
strcpy( casecontrollate[0][0][1], "Cosi' ");
strcpy( casecontrollate[0][0][2], "dichiari ");
strcpy( casecontrollate[0][1][0], "un ");
strcpy( casecontrollate[0][2][0], "array ");
strcpy( casecontrollate[0][3][0], "multi ");
strcpy( casecontrollate[0][4][0], "dimensione ");
strcpy( casecontrollate[1][0][0], "di ");
strcpy( casecontrollate[1][1][0], "stringhe");
strcpy( casecontrollate[1][2][0], "da 12 ");
strcpy( casecontrollate[1][3][0], "caratteri.");

printf("Stringa = %s\n", casecontrollate[0][0][0]);
printf("Stringa = %s\n", casecontrollate[0][0][1]);
printf("Stringa = %s\n", casecontrollate[0][0][2]);
printf("Stringa = %s\n", casecontrollate[0][1][0]);
printf("Stringa = %s\n", casecontrollate[0][2][0]);
printf("Stringa = %s\n", casecontrollate[0][3][0]);
printf("Stringa = %s\n", casecontrollate[0][4][0]);
printf("Stringa = %s\n", casecontrollate[1][0][0]);
printf("Stringa = %s\n", casecontrollate[1][1][0]);
printf("Stringa = %s\n", casecontrollate[1][2][0]);
printf("Stringa = %s\n", casecontrollate[1][3][0]);

printf("\nPremi il tasto INVIO.\n");
getchar();
return EXIT_SUCCESS;
}

newbie
16-08-2006, 12:45
Originariamente inviato da Nietta
Salve,
sto passando una mia applicazione da VB a C++, senza conoscerlo bene..
La mia attuale difficolta' e' l'inizializzazioe e uso di una matrice stringa.
Le istruzioni VB sono:
dim casecontrollate(8, 8, 2)

una matrice di stringhe a dimensione variabile, che inizializzo con:
For i = 1 To 2
For j = 1 To 8
For k = 1 To 8
casecontrollate(k, j, i) = ""
Next k
Next j
Next i
e che poi nel corso del programma utilizzo con istruzioni del tipo:
casecontrollate(k, j, i) = casecontrollate(k, j, i) & "B1"

Come si puo' fare la stessa cosa con c++?

una definizione del tipo:
char casecontrollate [12][2][8][8]
mi restituisce una matrice di 2x8x8 stringhe di 12 caratteri?

come la posso inizializzare?
Grazie per la risposta!
Nietta
Il tipo std::string dello Standard C++ forse fa al caso tuo, dato che ti semplifica le cose. Basterebbe scrivere



std::string casecontrollate[8][8][2]

for(int i = 0; i < 2; i++) //in C++ gli array partono da 0 e non da 1
for(int j = 0; j < 8; j++)
for(int k = 0; k < 8; k++)
casecontrollate[k][j][i] = ""

e poi
casecontrollate[k][j][i] = casecontrollate[k][j][i] + "B1" //il + concatena le stringhe

o almeno credo... è da un po' che non tratto lo Standard C++.

Loading