Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [C++] le stringhe

    Salve, in una guida ho trovato questo codice:

    codice:
    #include <string>
    std::string nome = "Niels Strostroup"
    void rep()
    { 
    nome.replace(0, 5, "Nicholas")
    }
    volevo sapere perchè se l'indice inizia da 0 "nicholas" sostituisce tutto "niels" ma non lo spazio?

    se la "n" di "niels" è l'indice 0 l'indice finale 5 corrisponde allo spazio tra le due parole, quindi la stringa finale dovrebbe essere "NicholasStrotroup" ?


    Grazie!

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    nome.replace(
    indice_di_partenza,
    numero_caratteri_da_sostituire_indice_di_partenza_ compreso,
    "Nicholas"
    )

    Chiedi di cambiare 5 caratteri a partire da 0 compreso. Di conseguenza il 5° carattere è 's'
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  3. #3
    ok.
    per curiosità, int in c++ significa un numero intero ma allora perchè prima di main bisogna scrivere int (oppure double ecc) anche se la funzione main non deve fare operazioni matematiche?

    grazie!

  4. #4
    E' diventato standard nel C++.
    Serve come codice di uscita per il processo, in windows per esempio all'uscita del processo, viene settata la variabile d'ambiente ERRORLEVEL con quel codice.

    0 se non ci sono stati errori, oppure >0 se hai avuto errori.

  5. #5
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Perché è imposto dallo standard.
    http://www.parashift.com/c++-faq-lit....html#faq-29.3

    E perché in questo modo può tornare un valore al sistema operativo che può essere usato in un file batch. Il fatto che non faccia operazioni matematiche non ha importanza.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  6. #6
    quindi in main si può ritornare solo un valore intero, giusto?
    mentre se creo una funzione x posso ritornare anche valori in virgola mobile, basta che scrivo double x() o qualche altro tipo, giusto?

  7. #7
    Esatto.
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    nella guida al c++ c'è scritto che questa riga vuol dire che i vale 1, ma non potrebbe valere qualsiasi valore intero maggiore di zero visto che sono tutti veri?
    codice:
    int i = true
    grazie

  9. #9
    Stai confondendo ciò che viene considerato vero dalle espressioni condizionali con i valori booleani. L'if/il while/... considerano come vero qualunque cosa che sia diversa da zero*. Tuttavia un bool può assumere solo due valori: true o false (§3.9.1:6).
    Values of type bool are either true or false.
    true è (un literal) di tipo bool (§2.13:5), e lì viene implicitamente convertito in un int. Come specificato dallo standard (§4.5:4), quando un bool viene convertito in un int false diventa 0 e true diventa 1.
    An rvalue of type bool can be converted to an rvalue of type int, with false becoming zero and true becoming one.
    È per questo dunque che alla tua variabile intera viene assegnato 1.

    Per inciso, non è così che si usa il forum, dato che è una domanda nuova dovresti aprire una discussione nuova.

    ---
    * in effetti ciò che viene messo nelle condizioni degli if/while/for/... viene convertito implicitamente in un bool (§6.4:4), e la condizione viene considerata vera se il risultato della conversione è true; valgono perciò le regole della conversione implicita a bool (§4.12):
    An rvalue of arithmetic, enumeration, pointer, or pointer to member type can be converted to an rvalue of type bool. A zero value, null pointer value, or null member pointer value is converted to false any other value is converted to true.
    Amaro C++, il gusto pieno dell'undefined behavior.

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.