Separazione di una variabile in altre 2

di il
11 risposte

Separazione di una variabile in altre 2

Ciao ragazzi, ultimamente ho riscontrato questo problema:
Ho un programma che deve eseguire il login in un server FTP, e per non inserire tutte le volte l'username e la pass(abbastanza complicati) si può scegliere se salvarle in un file txt o no e quando il programma si avvia chiede se si vuole caricare il slavataggio. Sono riuscito a fare tutto tranne scomporre la variabile dentro il file txt(salva come "usename pass")... Quando il programma va a leggere il file di testo e lo importo in una variabile(stringa) come faccio a separare di nuovo l'username e la pass? Sono separati da uno spazio...

11 Risposte

  • Re: Separazione di una variabile in altre 2

    Non si è capito molto ma se posti il codice che legge dal file riusciamo ad intenderci ...
  • Re: Separazione di una variabile in altre 2

    In pratica hai una stringa del tipo "xxxxx yyyyy" e vorresti avere stringa1 = "xxxxxx" e stringa2 = " yyyyy", ho capito bene?
  • Re: Separazione di una variabile in altre 2

    Se usi una fscanf per leggere, lo spazio ti basterà per separare le due stringhe.
  • Re: Separazione di una variabile in altre 2

    tuixte ha scritto:


    In pratica hai una stringa del tipo "xxxxx yyyyy" e vorresti avere stringa1 = "xxxxxx" e stringa2 = " yyyyy", ho capito bene?
    Esatto, ma senza lo spazio nella stringa2.

    oregon ha scritto:


    Se usi una fscanf per leggere, lo spazio ti basterà per separare le due stringhe.
    Mi sono dimenticato di dire che sto usando il c++ xD
    Parte del codice dove si legge la stringa:
    
            cout <<"There's an account saved. Do you want to load it?"<< endl; 
    cin >>res1;
    while (res1 != "No" && res1 != "no" && res1 != "NO" && res1 != "Yes" && res1 != "yes" && res1 != "YES")
        {
    cout <<"Say Yes or No."<< endl;
    cin >>res1;
    }
      if (res1 == "Yes"||res1 == "yes"||res1 == "YES")
    {
      ifstream StaffAccount("Saves/StaffAccount.txt");
      getline (StaffAccount, accountsaved);
      accountsaved = username + " " + password; // Per quanto sia sbagliato almeno ci ho provato xD
              cout <<username;
            system("PAUSE");
    }
    
  • Re: Separazione di una variabile in altre 2

    Si, avevo capito la questione dello spazio, è stato un mio errore di battitura
    Semplicemente, piuttosto che utilizzare la getline, fai
    tuoFile >> username >> password;
    Edit: Questo vale se si ipotizza che sia l'username sia la password non contengano spazi.
  • Re: Separazione di una variabile in altre 2

    tuixte ha scritto:


    Si, avevo capito la questione dello spazio, è stato un mio errore di battitura
    Semplicemente, piuttosto che utilizzare la getline, fai
    tuoFile >> username >> password;
    Edit: Questo vale se si ipotizza che sia l'username sia la password non contengano spazi.
    Beh, anche io ci avevo pensato xD
    Potresti spiegarmi come funziona? solo per curiosità

    _______________________________________________________________________
    Funziona perfettamente!
  • Re: Separazione di una variabile in altre 2

    Nello stesso identico modo di come funzionano stream come cin e cout.
    Guarda questo codice:
    int a, b;
    cin >> a >> b;
    L'utente può inserire: 24 invio 7 invio oppure 24 7 invio, il risultato sarebbe lo stesso: a = 24 e b = 7. Il carattere spazio viene utilizzato come separatore: dunque, scrivere
    tuoFile >> username >> password;
    significa: prendi tutti i caratteri presenti nel file finché trovi uno spazio, e metti tutto nella variabile username; a questo punto, dopo che lo spazio è stato scartato, si fa la stessa cosa con la variabile password, et voilà
  • Re: Separazione di una variabile in altre 2

    Grazie!
    E se le variabili fossero separate da un'uguale?
    Un'esempio è nelle impostazioni dei server nei giochi, nel txt:
    server_name = blabla
    server_description = blabla2
    ...
  • Re: Separazione di una variabile in altre 2

    Ci sono diverse soluzioni, si può operare leggendo tutta la stringa e individuando due substring utilizzando la posizione dell'uguale come separatore, oppure utilizzando la funzione get nelle varianti
    istream& get (char* s, streamsize n, char delim);
    istream& get (streambuf& sb, char delim);
    che permettono di specificare il delimitatore; o ancora, se sei sicuro che nella stringa chiave = valore ci sia sempre uno spazio prima e dopo l'uguale, operare come fai tu scartando la seconda variabile ottenuta.
  • Re: Separazione di una variabile in altre 2

    tuixte ha scritto:


    Ci sono diverse soluzioni, si può operare leggendo tutta la stringa e individuando due substring utilizzando la posizione dell'uguale come separatore, oppure utilizzando la funzione get nelle varianti
    istream& get (char* s, streamsize n, char delim);
    istream& get (streambuf& sb, char delim);
    che permettono di specificare il delimitatore; o ancora, se sei sicuro che nella stringa chiave = valore ci sia sempre uno spazio prima e dopo l'uguale, operare come fai tu scartando la seconda variabile ottenuta.

    Ok, questa risposta mi basta per capire che devo ancora capire molte cose del c++ ^.^"
  • Re: Separazione di una variabile in altre 2

    Ok, questa risposta mi basta per capire che devo ancora capire molte cose del c++ ^.^"
    In realtà si capiva dalla domanda di questo thread ... ma c'è tempo per imparare ...
Devi accedere o registrarti per scrivere nel forum
11 risposte