PDA

Visualizza la versione completa : [C/C++] STRINGHE: Di tutto di +


akiross
25-02-2002, 20:50
SALVE GENTE!!!
Ho avuto un'idea
dato che ho notato che molta gente che conosco ha UN SACCO DI PROBLEMI conm le strighe... x il fatto che possono essere gestite da puntatori, array e cose varie, ho pensato di fare un post dove poter mettere tutto ci che si sa riguardo ad esse...
un bella idea? SI?? allora posta un messaggio su quello che sai!
Io , dato che so gi abbastanza, chiedo ai professionisti una domanda che mi frulla in testa da tempo:
se faccio un puntatore a stringa e un array stringa:

char *str = "CIAO BELLI";
char arrs[] = "SALVE GENTE";

e faccio una cosa del genere:

sizeof(arrs);
il risultato (lunghezza str + 1)
e fino a qua tutto chiaro

e se invce faccio
sizeof(str);
il risultato 2 o 4 a seconda del compialtore
COME MAI???

se invece faccio

sizeof(str[4]);
accededno al 4o elemento della stringa il risultato 1 come tutti ci aspettavamo
chi mi spiega questo fatto strano???

ciauz
:D :D

Andrea Simonassi
25-02-2002, 20:59
sizeof(str) viene tradotto dal compilatore in
sizeof(char*) = 4 (sistemi 32 bit) o 2 (sistemi 16 bit)

sizeof(arrs) viene tradotto in
sizeof(char[12]) = 12 per tutti i sistemi ovvero la lunghezza della stringa + 1 carattere terminatore '\0'

akiross
25-02-2002, 21:08
oooooooo
davvero grazie Andrea
tnktnktnktnktnktnktnktnk
:D :D :D
E tu nn hai + nulla da dire sulle stringhe??
uffa:(

Andrea Simonassi
25-02-2002, 23:08
l'unica cosa di interessante che mi viene in mente adesso sull'argomento che la libreria standard del c++ definisce una classe string che si puo usare in modo simile al modo in cui si usano le stringhe nei linguaggi ad alto livello.

tipo


#include <string>
#include <iostream>

int main()
{
std::string s = "Salve";
s += " Gente"; //notare il +=

cout << s;

return 0;
}


ed efficiente quasi come le classiche stringhe C, senza i problemi di dovere allocare dinamicamente e soprattutto deallocare.

lucasp
16-05-2002, 22:08
up.......... dai che sto 3d interessante...............:gren:

Loading