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

    [C++] Problema lettura stringhe con spazi

    Salve a tutti. Non ditemi di cercare su forum perchè il problema è già stato affrontato in passato, lo so benissimo. Infatti ho provato varie soluzioni: utilizzando cin, cin.getline, gets e fgets, ma nessuna di queste funzioni è riuscita a risolvermi il problema. Quando vado ad inserire l'indirizzo, viene salvata solo la prima parola... qualcuno sa aiutarmi?

    Codice PHP:
    #include "persona.h"
    #include <iostream>
    using namespace std;

    void Persona::inserisci_nome()
    {
        
    cout << "Inserire nome: ";
        
    cin >> nome;
    }

    void Persona::inserisci_cognome()
    {
        
    cout << "Inserire cognome: ";
        
    cin >> cognome;
    }

    void Persona::inserisci_indirizzo()
    {
        
    cout << "Inserire indirizzo: ";
        
    cin >> indirizzo;
    }

    main()
    {
        
    Persona p;
        
    p.inserisci_nome();
        
    p.inserisci_cognome();
        
    p.inserisci_indirizzo();

        
    cout << endl
        
    << "Nome: " << p.nome << endl
        
    << "Cognome: " << p.cognome << endl
        
    << "Indirizzo: " << p.indirizzo << endl;


  2. #2
    Posta la dichiarazione della classe Persona.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Non credo che il problema sia la dichiarazione della classe, comunque eccola:

    Codice PHP:
    class Persona
    {
        public:
            
    char nome[20];
            
    char cognome[20];
            
    char indirizzo[30];
            
    void inserisci_nome( );
            
    void inserisci_cognome( );
            
    void inserisci_indirizzo( );
    }; 

  4. #4
    Utente di HTML.it L'avatar di KrOW
    Registrato dal
    Feb 2009
    Messaggi
    281
    Ciao . . . Nel metodo inserire_indirizzo invece di cin<<indirizzo usa cin.getline(indirizzo, 30) dovrebbe funzionare . . .
    C++ 4ever
    496e2062696e6172696f206e6f6e2063692061767265737469 206e656d6d656e6f2020726f7661746f203a29

  5. #5
    Originariamente inviato da KrOW
    Ciao . . . Nel metodo inserire_indirizzo invece di cin<<indirizzo usa cin.getline(indirizzo, 30) dovrebbe funzionare . . .
    Credo che tu non abbia letto tutto il primo post, ho già provato quel metodo ma non funziona...

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Originariamente inviato da Dreamer89
    Credo che tu non abbia letto tutto il primo post, ho già provato quel metodo ma non funziona...
    Cosa e come hai provato? Il metodo che ti ha suggerito KrOW funziona perfettamente. A limite, se hai problemi di buffer scrivi

    fflush(stdin);

    prima dell'istruzione di lettura cin.getline().
    every day above ground is a good one

  7. #7
    Utente di HTML.it L'avatar di KrOW
    Registrato dal
    Feb 2009
    Messaggi
    281
    Strano . . . Per sicurezza l' ho anche provato e funziona . . .
    C++ 4ever
    496e2062696e6172696f206e6f6e2063692061767265737469 206e656d6d656e6f2020726f7661746f203a29

  8. #8
    Originariamente inviato da YuYevon
    Cosa e come hai provato? Il metodo che ti ha suggerito KrOW funziona perfettamente. A limite, se hai problemi di buffer scrivi

    fflush(stdin);

    prima dell'istruzione di lettura cin.getline().
    Provato anche questo, ma nulla... sarà che sono su linux? Anche se penso che non centri nulla, bho, ora riprovo

  9. #9
    Niente da fare, ho provato anche creando un nuovo file senza utilizzare la classe... o_O Incredibile

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Originariamente inviato da Dreamer89
    sarà che sono su linux? Anche se penso che non centri nulla
    No invece c'entra. Prova così: includi l'header

    <stdio_ext.h>

    e al posto di fflush(stdin) scrivi

    __fpurge(stdin); // con due _

    Se non funziona nemmeno così, posta il codice esatto che stai provando e possibilmente anche un esempio di esecuzione... basta che fai il copia-incolla dalla shell, niente immagini e roba simile.
    every day above ground is a good one

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.