Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    79

    [C++] Stringhe e spazi bianchi

    codice:
    #include <iostream>
    #include <string>
    
    using namespace std;
    
    int main()
    {
    	string test_string;
    	cout <<"\nInserisci una stringa: ";
    	cin >>noskipws >>test_string;
    
    	int vettore [test_string.length()];
    
    	for ( int i = 0; i < test_string.length(); i++ )
    	{
    		vettore[i] = static_cast<int>(test_string[i]);
    		cout <<vettore[i] <<" ";
    	}
    
    	return 0;
    }
    Ragazzi mi servirebbe una mano riguardo questo codice: il mio obiettivo è quello di leggere in ingresso una stringa, convertire i vari caratteri che la compongono in interi ed inserire questi numeri ottenuti in un array..
    Il problema è che mi servirebbe leggere anche lo spazio bianco.. per questo ho provato a passare >>noskipws al cin.. ma non funziona comunque

    esempio:
    se scrivo "ciao" ----> stampa 99 105 97 111
    se scrivo "a ciao" ----> mi stampa solo 97 e salta gli altri caratteri

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Al posto della semplice cin utilizza

    getline(cin, test_string);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    79
    perfetto, funziona!.. grazie mille

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    79
    Scusate, un'ultima domanda sempre sullo stesso codice..
    Volevo aggiungere anche una semplice scelta multipla al programmino tramite un costrutto switch, ma il problema è che non funziona più
    Quando seleziono il case 1, il terminale mi stampa a video "Errore di segmentazione (Core Dump creato)".. sapreste dirmi cosa c'è che non va??

    codice:
    #include <iostream>
    #include <string>
    
    using namespace std;
    
    int main()
    {
    	int scelta;
    	string test_string;
    	cin >>scelta;
    
    	switch(scelta)
    	{
    		case 1:
    			
    			cout <<"\nInserisci una stringa: ";
    			getline(cin, test_string);
    
    			int vettore [test_string.length()];
    
    			for ( int i = 0; i < test_string.length(); i++ )
    			{
    				vettore[i] = static_cast<int>(test_string[i]);
    				cout <<vettore[i] <<" ";
    			}
    		break;
    		
    		case 2:
    		        //fai qualcosa
                    break;
    
    		default:
    			cout <<"\nprova";
    		break;
    	}
            return 0;
    
    }

  5. #5
    Utente bannato
    Registrato dal
    Apr 2012
    Messaggi
    510
    Non va in segmentation fault

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    79
    Mmh che strano.. A me non faceva nemmeno inserire la stringa che mi andava in errore di segmentazione.. Adesso lo compilo di nuovo e faccio altre prove

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    79
    a me continua ad andare in segmentation fault

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Per evitare problemi di input, aggiungi una

    cin.ignore();

    dopo la

    cin >> scelta;

    ma non ho alcun segmentation fault neanch'io.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.