Visualizzazione dei risultati da 1 a 6 su 6

Discussione: stringhe in C++

  1. #1

    stringhe in C++

    ciao a tutti

    io sto usando il c++ builder 6 della borland per fare un programma che crea dei test leggendoli da un file di testo . il mio problema e ke voglio inserire una domanda e le quattro risposte in un tipo di dato domanda definito così

    struct domanda
    { string testo;
    string risp[4];
    };
    string è definito così : typedef char string[200];
    ho definito d1,d2 come domanda
    ma quando provo a fare

    d1.risp[1]="Napoleone" ;

    mi dice lvalue required

    Che faccio???
    << Software as like sex:is better when it's free>>

  2. #2
    provato a fare

    codice:
    strcpy(d1.risp[1],"Napoleone");
    La luce è più veloce del suono,ecco xchè alcune persone sembrano brillanti fino a quando non parlano


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

    risp è un array di string, quindi risp[1] è una variabile di tipo string. Cos'è string? string l'hai definito com eun array di caratteri, quindi risp[1] è un array di caratteri. Poi tu assegni a risp[1] il valore "Napoleone". Cos'è il valore "Napoleone"? E' un puntatore a carattere, ovvero un oggetto di tipo char *. Ora spesso si dice che array e puntatori sono la stessa cosa, ma c'è una differenza importante, ovvero gli array sono puntatori COSTATNTI, cioè non possono essere riassegnati, ovveero, puoi cambiare gli elementi dell'array, ma non il puntatotre dell'array stesso. Quando fai:

    risp[1] = "Napoleone"

    stai assegnando all'array risp[1] un nuovo puntatore, ovvero quello rappresentato da "Napoleone", e non si puo fare.

    Puoi risolvere in 2 modi:

    1 - definire string non come un array ma come un puntatore, cosi puo essere riassegnato:

    typedef char *string;

    2 - mantieni la definizione di string, però quando vuoi assegnare un certo valore al campo risp[1] non assegni direttamente il puntatore, ma modifchi gli elementi dell'array, ovvero copi uno ad uno i caratteri della stringa "Napoleone" dentro risp[1]. A tal proposito puoi usare una funzione di libreria per copire una stringa in un altra.

    Oppure, perchè non usi direttamente le stringhe del c++?


  4. #4
    Utente di HTML.it L'avatar di Xadoom
    Registrato dal
    Dec 2002
    Messaggi
    1,491
    Originariamente inviato da anx721
    Ora spesso si dice che array e puntatori sono la stessa cosa, ma c'è una differenza importante, ovvero gli array sono puntatori COSTATNTI, cioè non possono essere riassegnati, ovveero, puoi cambiare gli elementi dell'array, ma non il puntatotre dell'array stesso.
    ....grazie, era una cosa che mi è sempre sfuggita!!
    Windows Xp
    [Java]
    [PHP]Notepad++
    [Fortran90-77] elf90 g77
    [C++ /WinAPI] DevC++ VisualC++

  5. #5

    grazie

    grazie m@ximo . provo con la prima soluzione.
    Cmq come si dikiarano le stringhe in c+??
    << Software as like sex:is better when it's free>>

  6. #6
    includi la libreria string.h così:

    #include <string.h>

    e definisci la tua variabile come string
    La luce è più veloce del suono,ecco xchè alcune persone sembrano brillanti fino a quando non parlano


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 © 2025 vBulletin Solutions, Inc. All rights reserved.