Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [C++] Array di string

  1. #1

    [C++] Array di string

    Fino ad oggi ignoravo l'esistenza della classe string, che semplifica di molto la gestione delle stringhe.

    Però io ho bisogno di creare un array di stringhe.... ma non so come fare...
    Già ho ancora poca confidenza con questo template.
    E poi non riesco a trovare niente

    codice:
    #include<string>
    
    const n=10;
    string vettore[n];
    Dovrebbe dichiarare un vettore di stringhe?
    Oppure devo specificare la lunghezza di ogni stringa del vettore?

    E come lo inizializzo?
    codice:
    vettore[0]="pippo";
    vettore[1]="pluto";
    Va bene?

    Insomma mi sapete dire queste cose base che son totalmente nuovo al concetto di stringhe con il C

    Grazie

  2. #2
    penso che dovresti mettere qualcosa del genere.

    #include <string>

    int main ()
    {
    const int n=10;
    std::string *vettore = new std::string[n];

    ...
    ...

    }

    ciao
    sergio

  3. #3
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352

    Re: [C++] Array di string

    Originariamente inviato da pictor
    Fino ad oggi ignoravo l'esistenza della classe string, che semplifica di molto la gestione delle stringhe.

    Però io ho bisogno di creare un array di stringhe.... ma non so come fare...
    codice:
    #include<string>
    
    const n=10;
    string vettore[n];
    Dovrebbe dichiarare un vettore di stringhe?
    Oppure devo specificare la lunghezza di ogni stringa del vettore?

    E come lo inizializzo?
    codice:
    vettore[0]="pippo";
    vettore[1]="pluto";
    Va bene?
    Sì va bene; questo è uno dei modi per creare un array di string e inizializzarlo; la creazione dell'array funziona perche la classe string ha un costruttore senza argomenti che costruisce una stringa nulla, altrimneti non si potrebbe dichiarare un array statico in quel modo; inoltre i letterali "xxxx" sono di tipo

    const char *

    che è un tipo diverso da "string"; tuttavia l'assegnamento funziona perche string ha un costruttore che prende come un argomento un char * per cui c'è un cast automatico da char * a string.

    Tuttavia se non hai queste basi in c++ ti consiglio di studiartele al piu presto, se no ti blocchi quasi subito; scaricati Thinking in C++ di bruce eckel.

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  4. #4

    Re: Re: [C++] Array di string

    Originariamente inviato da anx721
    Sì va bene; questo è uno dei modi per creare un array di string e inizializzarlo; la creazione dell'array funziona perche la classe string ha un costruttore senza argomenti che costruisce una stringa nulla, altrimneti non si potrebbe dichiarare un array statico in quel modo; inoltre i letterali "xxxx" sono di tipo

    const char *

    che è un tipo diverso da "string"; tuttavia l'assegnamento funziona perche string ha un costruttore che prende come un argomento un char * per cui c'è un cast automatico da char * a string.

    Tuttavia se non hai queste basi in c++ ti consiglio di studiartele al piu presto, se no ti blocchi quasi subito; scaricati Thinking in C++ di bruce eckel.
    Beh le basi ce le ho abbastanza... però principalmente di C.
    Ho iniziato solamente ieri ad usare veramente il C++ con le sue funzionalità aggiuntive.
    A scuola mi insegnano solamente il C... quindi il Plus Plus me lo devo imparare pian piano da solo

    Comunque avevo provato quel codice e non funzionava perchè non avevo messo
    codice:
    using namespace std;
    e lui si aspettava std::string

    Adesso sto cercando di sostituire le string al posto degli array di char di un programma che ho.

    Adesso ho un problema con la fopen.
    codice:
    	File=fopen(Filename.c_str(),"r");
    dove Filename è uno string con il nome del file.
    La compilazione va a buon fine ma quando avvio il programma mi si blocca con un "Debug Assertion Failed"! VVoVe:

    Non so come risolvere..... non dovrebbe andare bene?

    Grazie,
    Pictor

  5. #5
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    La riga in sè e per sè e corretta, ci sarà qualche altro erore altrove; stai usando la macro assert? se non risolvi posta il codice; le basi del C sono solo un parte delle basi del c++...

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  6. #6
    Beh... gli dava noia la conversione con .c_str()
    Ho fatto prima la conversione e gliel'ho passata come array di caratteri. Anche se questo mi obbliga ad avere una lunghezza del nome predefinita....

    Non so in che altro modo risolvere.... anche se mi scoccia avere una dimensione predefinita.

    Comunque non credo di usare queste "macro assert"; soprattutto per il fatto che non so cosa sono
    Ad ogni modo non posso postare tutto il codice.... Sono 500 righe....

    Comunque adesso mi funzionerebbe.... solo che mi da un errore su un comando OpenGL. Mi dice "Unknown DIB file format". Ma non credo che ve ne intendiate (pure su Google si trova poco o niente).
    [EDIT]
    Mi sono sbagliato. Non funziona.
    Avevo provato a fare:
    codice:
    	string nometexture;
    	nometexture="Data/texture.bmp";
    	char buffer[20];
    	strcpy(buffer,nometexture.c_str());
    Ma mi da errore di "Debug Assertion Failed" sulla fopen.c (riga 54)
    Allora ho provato a sostituire "nometexture.c_str()" direttamente con "Data/texture.bmp" e funziona!
    Mi sapete dire perchè?
    [/EDIT]

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.