Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    [c++] char e string

    Salve,

    ho visto che in c++ sembra non esistere il concetto di stringhe, quindi bisogna sempre dare una dimensione alle variabili char quando si definiscono, allora mi chiedo: che differenza c'è tra:

    codice:
    char k[20] = "Hello World!";
    e

    codice:
    char * k = "Hello World!";
    non mi converrebbe usare sempre quest'ultimo tipo di assegnazione?
    Alla batteria dai retta ballA

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    In C++ esiste la classe

    string

    Quello di cui parli è caratteristico del C (char array e puntatori a char array).
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565

    Re: [c++] char e string

    Originariamente inviato da gianvituzzi
    Salve,

    ho visto che in c++ sembra non esistere il concetto di stringhe, quindi bisogna sempre dare una dimensione alle variabili char quando si definiscono, allora mi chiedo: che differenza c'è tra:

    codice:
    char k[20] = "Hello World!";
    e

    codice:
    char * k = "Hello World!";
    non mi converrebbe usare sempre quest'ultimo tipo di assegnazione?
    Per dirla tutta puoi anche fare
    codice:
    char k[] = "Hello World!";
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  4. #4

    Re: [c++] char e string

    Originariamente inviato da gianvituzzi
    Salve,

    ho visto che in c++ sembra non esistere il concetto di stringhe, quindi bisogna sempre dare una dimensione alle variabili char quando si definiscono, allora mi chiedo: che differenza c'è tra:

    codice:
    char k[20] = "Hello World!";
    e

    codice:
    char * k = "Hello World!";
    non mi converrebbe usare sempre quest'ultimo tipo di assegnazione?
    Prova il seguente, e tutto ti sarà più chiaro:
    codice:
    #include <iostream>
    
    int main (void){
    	const char a [] = "Hello World!";
    	const char * b = "Hello World!";
    	std::cout << sizeof (a) << std::endl;
    	std::cout << sizeof (b) << std::endl;
    	return 0;
    }
    ;-)

  5. #5
    allora a ha una sizeof di 13 mentre b di 4...vuol dire che mi conviene usare sempre char * ??
    Alla batteria dai retta ballA

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da gianvituzzi
    allora a ha una sizeof di 13 mentre b di 4...vuol dire che mi conviene usare sempre char * ??
    No ... non era questo che ti voleva far capire ... ma se non hai chiari concetti come "puntatori" non ti sarà facile capire la differenza.

    Hai dato un'occhiata alla classe string del C++ ?

    P.S. Stai iniziando a studiare C o C++ ? Hai studiato i "puntatori" ? Senza un metodo di studio, non imparerai facilmente il C/C++ ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7

    Re: [c++] char e string

    Originariamente inviato da gianvituzzi
    Salve,

    ho visto che in c++ sembra non esistere il concetto di stringhe, quindi bisogna sempre dare una dimensione alle variabili char quando si definiscono, allora mi chiedo: che differenza c'è tra:

    codice:
    char k[20] = "Hello World!";
    e

    codice:
    char * k = "Hello World!";
    non mi converrebbe usare sempre quest'ultimo tipo di assegnazione?
    Il secondo è sbagliato, dovrebbe essere const char *. La differenza tra il primo e il secondo è che il primo alloca un buffer di 20 caratteri sullo stack inizializzandolo alla stringa in questione, mentre il secondo alloca lo spazio per un puntatore e ci assegna l'indirizzo della stringa "Hello World!" che si trova nella tabella delle stringhe dell'eseguibile, e, come tale, non è modificabile (per questo dovrebbe essere un const char *).
    Se vuoi una soluzione analoga alla prima (per cui puoi modificare la stringa) ma leggermente più comoda puoi usare il metodo di XWolverineX.

    In generale comunque in C++ si preferisce usare la classe string, anche se comunque le stringhe C ASCIIZ te le troverai sempre tra i piedi.
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    Originariamente inviato da oregon
    No ... non era questo che ti voleva far capire ... ma se non hai chiari concetti come "puntatori" non ti sarà facile capire la differenza.

    Hai dato un'occhiata alla classe string del C++ ?

    P.S. Stai iniziando a studiare C o C++ ? Hai studiato i "puntatori" ? Senza un metodo di studio, non imparerai facilmente il C/C++ ...
    si si, sto studiando...credevo che il passaggio da perl a c++
    sarebbe stato più facile...

    quindi in pratica NON posso assegnare ad esempio ad una variablie /char *k/ l'input di una /scanf/? ma posso solo passare il valore letto da stdin solo ad una variabilie precedentemente "dimensionata"??

    potresti farmi u esempio su questa classe string? forse mi sto perdendo in un bicchier d'acqua,,,
    Alla batteria dai retta ballA

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da gianvituzzi
    si si, sto studiando...credevo che il passaggio da perl a c++
    sarebbe stato più facile...
    Devi studiare il C/C++ come se non conoscessi nessun altro linguaggio.
    E devi partire dal primo capitolo di un buon libro, senza dare per scontato nulla.

    quindi in pratica NON posso assegnare ad esempio ad una variablie /char *k/ l'input di una /scanf/? ma posso solo passare il valore letto da stdin solo ad una variabilie precedentemente "dimensionata"??
    Chiediti cosa e' una variabile di tipo

    char *k

    Solo se lo capirai perfettamente, potrai rispondere a questa e altre domande simili.

    potresti farmi u esempio su questa classe string? forse mi sto perdendo in un bicchier d'acqua,,,
    Nessun bicchiere d'acqua. Stai solamente sbagliando metodo di apprendimento.
    Non puoi imparare il C++ da un forum con qualche esempio.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    si si ma certo! credevo che dopo che avevo letto le guide di c e c++ su questo sito avrei avuto un'infarinatura generale discreta...forse sto sbagliando a soffermarmi di più sulle api di win32 (quelle si che sono sconosciute!)

    vado a comprarmi un bel libro
    Alla batteria dai retta ballA

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.