<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ C++ - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Impara a programmare gratuitamente! Tutorial di programmazione su Python, JavaScript, Linux e molto altro. ]]>
        </description>
        <link>https://www.freecodecamp.org/italian/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ C++ - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/italian/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Tue, 05 May 2026 19:48:11 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/italian/news/tag/c-2/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Programmazione Orientata agli Oggetti in C++ ]]>
                </title>
                <description>
                    <![CDATA[ La programmazione orientata agli oggetti, in breve OOP (Object Orienting Programming), mira a implementare entità del mondo reale come ereditarietà, incapsulamento e polimorfismo nella programmazione. Lo scopo principale della OOP è di tenere insieme dati e funzioni che operano su di essi in modo che nessuna altra parte di codice ]]>
                </description>
                <link>https://www.freecodecamp.org/italian/news/programmazione-orientata-agli-oggetti-in-c/</link>
                <guid isPermaLink="false">6474b9241647bb059b5416bc</guid>
                
                    <category>
                        <![CDATA[ C++ ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Roberto Pauletto ]]>
                </dc:creator>
                <pubDate>Tue, 27 Jun 2023 09:18:04 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/italian/news/content/images/2023/05/5f9c9e69740569d1a4ca3cf0.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Articolo originale:</strong> <a href="https://www.freecodecamp.org/news/object-oriented-programming-in-c/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Object Oriented Programming in C++</a>
      </p><p>La programmazione orientata agli oggetti, in breve OOP (Object Orienting Programming), mira a implementare entità del mondo reale come ereditarietà, incapsulamento e polimorfismo nella programmazione.</p><p>Lo scopo principale della OOP è di tenere insieme dati e funzioni che operano su di essi in modo che nessuna altra parte di codice possa accedere a tali dati eccetto queste funzioni.</p><p>Impareremo le diverse caratteristiche della programmazione orientata agli oggetti in linguaggio C++.</p><h3 id="oggetto"><strong>Oggetto</strong></h3><p>Gli oggetti costituiscono le entità base nella fase di esecuzione in un sistema orientato agli oggetti. Gli oggetti sono istanze di una classe, che è un tipo di dato definito dall'utente.</p><pre><code class="language-c++">class person
{
    char name[20];
    int id;
public:
    void getdetails(){}
};
 
int main()
{
   person p1; //p1 è un oggetto 
}</code></pre><p>Gli oggetti occupano spazio in memoria e hanno un indirizzo associato come un record in pascal o una struttura o union in C.</p><p>Quando un programma viene eseguito, gli oggetti interagiscono scambiandosi messaggi.</p><p>Ciascun oggetto contiene dei dati e del codice per manipolarli. Gli oggetti possono interagire senza aver bisogno di conoscere i dettagli o il codice di ciascun altro. È sufficiente sapere quale tipo di messaggio viene accettato e il tipo di risposta ritornata dagli oggetti.</p><h3 id="classe"><strong><strong><strong><strong>Class</strong></strong></strong>e</strong></h3><p>Una classe è un modello che rappresenta dati e funzioni o metodi. Una classe non occupa spazio.</p><pre><code class="language-c++">class nome_classe
{
  private:
     //dichiarazione di dati e funzioni membro
  public:
     //dichiarazione di dati e funzioni membro
  protected:
     //dichiarazione di dati e funzioni membro	
};</code></pre><p>Una classe è un tipo di dato definito dall'utente come le strutture e le union in C.</p><p>Nella modalità predefinita, le variabili nella classe sono private, ma in caso di struttura sono pubbliche, nell'esempio più sopra <code>person</code> è una classe.</p><h3 id="incapsulamento-e-astrazione-dati"><strong>Incapsulamento e Astrazione Dati</strong></h3><p>Tenere insieme (combinare) dati e funzioni in una singola unità è noto come incapsulamento. I dati non sono accessibili direttamente dal mondo esterno, ma solo tramite i metodi e le proprietà esposti dalla classe. Questo isolamento dei dati dall'accesso diretto da un programma viene detto occultamento di dati oppure occultamento di informazioni.</p><p>Per astrazione dati ci si riferisce al fatto che vengono fornite solo le informazioni necessarie al mondo esterno e vengono nascosti i dettagli dell'implementazione.</p><p>Per esempio considera una classe <code>Complex</code> che contenga le funzioni pubbliche <code>getReal()</code> e <code>getImag()</code>. Possiamo implementare la classe come un array di due elementi oppure come due variabili.</p><p>Il vantaggio dell'astrazione è che possiamo modificare l'implementazione in qualsiasi momento e gli utenti della classe <code>Complex</code> non saranno interessati visto che l'interfaccia dei nostri metodi rimane la stessa. Se l'implementazione fosse stata pubblica, non saremmo stati in grado di modificarla.</p><h3 id="ereditariet-"><strong>Ereditarietà</strong></h3><p>L'ereditarietà è il processo per il quale oggetti di una classe acquisiscono le proprietà di oggetti di un un'altra classe. Supporta il concetto di classificazione gerarchica.</p><p>L'ereditarietà fornisce riusabilità. Il che vuol dire che possiamo aggiungere caratteristiche a una classe esistente senza modificarla.</p><h3 id="polimorfismo"><strong><strong><strong><strong>Pol</strong></strong></strong>i<strong><strong><strong>mor</strong></strong></strong>f<strong><strong><strong>ism</strong></strong></strong>o</strong></h3><p>Il polimorfismo fa riferimento alla capacità di assumere più di una forma. Un'operazione potrebbe manifestare comportamenti diversi per istanze diverse. Il comportamento dipende dai tipi di dato usati nell'operazione.</p><p>C++ supporta il sovraccarico dell'operatore e della funzione. Il sovraccarico dell'operatore consiste nel fare in modo che un operatore assuma comportamenti diversi in istanze diverse. Il sovraccarico della funzione consiste nell'usare un singolo nome di funzione per eseguire tipi di compito differenti. Il polimorfismo è usato estensivamente nell'implementazione dell'ereditarietà.</p><h3 id="collegamento-dinamico"><strong>Collegamento Dinamico</strong></h3><p>Nel collegamento dinamico, il codice che deve essere eseguito in risposta alla chiamata di una funzione viene deciso in fase di esecuzione. &nbsp;C++ ha le funzioni virtuali che supportano questo.</p><h3 id="passaggio-di-messaggi"><strong>Passaggio di messaggi</strong></h3><p>Gli oggetti comunicano tra loro inviando e ricevendo informazioni da ciascun altro. Un messaggio per un oggetto è la richiesta che una certa procedura venga eseguita, pertanto verrà invocata una funzione nell'oggetto ricevente che genera i risultati attesi.</p><p>Il passaggio di messaggi implica l0 specificare il nome dell'oggetto, il nome della funzione e l'informazione da inviare.</p><h2 id="altre-risorse"><strong>Altre risorse</strong></h2><p><a href="https://www.freecodecamp.org/news/object-oriented-concepts/">Object Oriented Programming Concepts: How to go from Zero to One with Objects</a></p><p><a href="https://www.freecodecamp.org/italian/news/come-spiegare-concetti-di-programmazione-orientata-agli-oggetti-a-un-bambino-di-6-anni/">Come spiegare concetti di programmazione orientata agli oggetti a un bambino di 6 anni</a></p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Da string a int in C++ – Esempi di conversione di una stringa in un intero ]]>
                </title>
                <description>
                    <![CDATA[ Quando programmi in C++, ci sono spesso casi in cui devi convertire un tipo di dato in un altro. In questo articolo, imparerai come convertire una stringa in un intero in C++ usando i due metodi più popolari per svolgere questa operazione. Iniziamo! Tipi di dati in C++ Il linguaggio ]]>
                </description>
                <link>https://www.freecodecamp.org/italian/news/da-string-a-int-in-c-esempi-di-conversione-di-una-stringa-in-un-intero/</link>
                <guid isPermaLink="false">6308de7a1c3e7e073e092d64</guid>
                
                    <category>
                        <![CDATA[ C++ ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Dario Di Cillo ]]>
                </dc:creator>
                <pubDate>Tue, 13 Sep 2022 05:30:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/italian/news/content/images/2022/08/nick-hillier-yD5rv8_WzxA-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Articolo originale:</strong> <a href="https://www.freecodecamp.org/news/string-to-int-in-c-how-to-convert-a-string-to-an-integer-example/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">String to Int in C++ – How to Convert a String to an Integer Example</a>
      </p><p>Quando programmi in C++, ci sono spesso casi in cui devi convertire un tipo di dato in un altro.</p><p>In questo articolo, imparerai come convertire una stringa in un intero in C++ usando i due metodi più popolari per svolgere questa operazione.</p><p>Iniziamo!</p><h2 id="tipi-di-dati-in-c-"><strong>Tipi di dati in C++</strong></h2><p>Il linguaggio di programmazione C++ possiede alcuni tipi di dati integrati:</p><ul><li><code>int</code>, per i numeri interi (ad esempio 10, 150)</li><li><code>double</code>, per i numeri in virgola mobile (ad esempio 5.0, 4.5)</li><li><code>char</code>, per i caratteri singoli (ad esempio 'D', '!')</li><li><code>string</code>, per le sequenze di caratteri (ad esempio "Hello")</li><li><code>bool</code>, per i valori booleani (true o false)</li></ul><p>C++ è un linguaggio di programmazione <strong>fortemente tipizzato</strong>, che vuol dire che per creare una variabile occorre dichiarare esplicitamente il tipo di valore che vi dovrà essere memorizzato.</p><h2 id="come-dichiarare-e-inizializzare-degli-int-in-c-"><strong>Come dichiarare e inizializzare degli <code>int</code> in C++</strong></h2><p>Per <em>dichiarare </em>una variabile <code>int</code> in C++ devi prima scrivere il tipo di dato della variabile – in questo caso <code>int</code>. In questo modo, il compilatore sa il tipo di valore che una variabile può contenere e di conseguenza le azioni che può effettuare.</p><p>Poi, hai bisogno di dare un nome alla variabile.</p><p>Infine, non dimenticare un punto e virgola al termine dell'istruzione!</p><pre><code class="language-cpp">#include &lt;iostream&gt;

int main() {
    int age;
}
</code></pre><p>Puoi assegnare un valore alla variabile che hai creato, in questo modo:</p><pre><code class="language-cpp">#include &lt;iostream&gt;

int main() {
    int age;
    age = 28;
}
</code></pre><p>Oppure, invece di svolgere queste azioni in due passaggi separati, puoi combinarli <em>inizializzando </em>la variabile e alla fine stampare il risultato.</p><pre><code class="language-cpp">// Un file di intestazione che permette l'utilizzo di funzioni per restituire informazioni come output
//Ad esempio, cout o cin per informazioni di input
#include &lt;iostream&gt; 

// Un'istruzione namespace; non avrai bisogno di usare il prefisso std::
using namespace std;


int main() { // Inizio della funzione principale del programma
    int age = 28; 
    // Inizializzazione della variabile 
    // Inizializzare vuol dire specificare il tipo, il nome e il valore di una variabile.

    // output sulla console: "My age is 28", usando il chaining, &lt;&lt;
    cout &lt;&lt; "My age is: " &lt;&lt; age &lt;&lt; endl;
}// end the main function
</code></pre><h2 id="come-dichiarare-e-inizializzare-delle-string-in-c-"><strong>Come dichiarare e inizializzare delle <code>string</code> in C++</strong></h2><p>Le stringhe sono delle sequenze di caratteri singoli.</p><p>Dichiarare una stringa in C++ avviene in modo analogo a dichiarare e inizializzare degli <code>int</code>, come abbiamo visto nella sezione precedente.</p><p>La libreria standard C++ fornisce una classe <code>string</code>. Per poter usare il tipo di dato string, devi includere la libreria di intestazione <code>&lt;string&gt;</code> in cima al tuo file, dopo <code>#include &lt;iostream&gt;</code>.</p><p>Dopo avere aggiunto il file di intestazione, puoi anche aggiungere <code>using namespace std;</code> come abbiamo visto prima.</p><p>Tra le altre cose, dopo aver aggiunto questa riga, non è necessario usare <code>std::string</code> per creare una variabile stringa – basta soltanto <code>string</code>.</p><pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

int main() {
    // Dichiarazione di una variabile stringa

    string greeting;
    greeting = "Hello";
    // `=` è l'operatore di assegnazione che assegna il valore alla variabile

}
</code></pre><p>Oppure puoi inizializzare una variabile stringa e stamparla sulla console:</p><pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

int main() {
    // Inizializzazione della variabile stringa

    string greeting = "Hello";
   
   //output sulla console: "Hello"
   cout &lt;&lt; greeting &lt;&lt; endl;
}
</code></pre><h2 id="come-convertire-una-stringa-in-un-intero"><strong>Come convertire una stringa in un intero</strong></h2><p>Come detto precedentemente, C++ è un linguaggio <em>fortemente tipizzato</em>.</p><p>Se provi a dare un valore che non è conforme al tipo di dato, otterrai un errore.</p><p>Inoltre, convertire una stringa in un intero non è così semplice come una conversione di tipo da <code>double</code> a <code>int</code>.</p><p>Ad esempio, <strong>non puoi </strong>fare questo:</p><pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

int main() {
   string str = "7";
   int num;

   num = (int) str;
}
</code></pre><p>Dopo la compilazione otterrai questo errore:</p><pre><code>hellp.cpp:9:10: error: no matching conversion for C-style cast from 'std::__1::string' (aka
      'basic_string&lt;char, char_traits&lt;char&gt;, allocator&lt;char&gt; &gt;') to 'int'
   num = (int) str;
         ^~~~~~~~~
/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/string:875:5: note: candidate function
    operator __self_view() const _NOEXCEPT { return __self_view(data(), size()); }
    ^
1 error generated.
</code></pre><p>Ci sono alcuni modi per convertire una stringa in un intero. Ne vedremo due, menzionati nelle sezioni a seguire.</p><h3 id="conversione-da-string-a-int-usando-la-funzione-stoi-"><strong>Conversione da <code>string</code> a <code>int</code> usando la funzione <code>stoi()</code></strong></h3><p>Un modo efficace per convertire un oggetto stringa in un <code>int</code> numerico è usare la funzione <code>stoi()</code>.</p><p>Questo metodo è comunemente usato nelle nuove versioni di C++, visto che è stato introdotto con C++11.</p><p>Prende come input una stringa e restituisce come output una sua versione di tipo <code>int</code>.</p><pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

int main() {
   // una variabile stringa chiamata str
   string str = "7";
   // stampa sulla console
   cout &lt;&lt; "I am a string " &lt;&lt; str &lt;&lt; endl;

   // conversione della variabile stringa str in valore int
   // il nuovo valore viene inserito in una variabile chiamata num che contiene valori int
   int num = stoi(str);
   
   // stampa sulla console
   cout &lt;&lt; "I am an int " &lt;&lt; num &lt;&lt; endl;
}
</code></pre><p>Output:</p><pre><code>I am a string 7
I am an int 7
</code></pre><h3 id="conversione-da-string-a-int-usando-la-classe-stringstream"><strong>Conversione da <code>string</code> a <code>int</code> usando la classe <code>stringstream</code></strong></h3><p>La classe <code>stringstream</code> è principalmente usata nelle versioni più vecchie di C++. Funziona eseguendo input e output su stringhe.</p><p>Per usarla, devi prima includere la libreria <code>sstream</code> in cima al programma aggiungendo la riga <code>#include &lt;sstream&gt;</code>.</p><p>Poi devi aggiungere <code>stringstream</code> e creare un oggetto <code>stringstream</code>, che conterrà il valore della stringa da convertire in un intero e sarà usato durante il processo di conversione.</p><p>L'operatore <code>&lt;&lt;</code> viene usato per <em>estrarre </em>la stringa dalla variabile stringa.</p><p>Infine, l'operatore <code>&gt;&gt;</code> viene usato per dare come <em>input </em>alla variabile int<em> </em>il nuovo valore intero convertito.</p><pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;sstream&gt; // ti permette di usare stringstream nel tuo programma

using namespace std;

int main() {
    // creazione di un oggetto stringstream
   stringstream ss; 
   
   // una variabile chiamata str, di tipo string
   string str = "7";
   
   // una variabile chiamata num, di tipo int
   int num;
   
   
   // estrazione della stringa dalla variabile str (la stringa viene data come input a stream)
   ss &lt;&lt; str;
   
   // il valore convertito viene inserito nella variabile int
   ss &gt;&gt; num;
   
   // stampa sulla console
   cout &lt;&lt; num &lt;&lt; endl; // viene stampato il valore intero 7
}
</code></pre><h2 id="conclusione"><strong>Conclusione</strong></h2><p>Ed ecco fatto! Hai visto due semplici metodi per convertire una stringa in un intero in C++.</p><p>Grazie per aver letto questo articolo e buona programmazione 😊</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Compilatore C++: cos'è un compilatore e come funziona? ]]>
                </title>
                <description>
                    <![CDATA[ Introduzione ai compilatori C++ Prima di iniziare ad utilizzare C++, è bene che tu impari qualcosa a riguardo dei compilatori e come viene eseguito C++ sul tuo computer. In fin dei conti, i computer comprendono soltanto una lingua, il linguaggio macchina, che è interamente costituito da codice binario, una sequenza ]]>
                </description>
                <link>https://www.freecodecamp.org/italian/news/compilatore-c-cose-un-compilatore-e-come-funziona/</link>
                <guid isPermaLink="false">62e3ddb55cda1d06d40dad1b</guid>
                
                    <category>
                        <![CDATA[ C++ ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Dario Di Cillo ]]>
                </dc:creator>
                <pubDate>Fri, 19 Aug 2022 05:30:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/italian/news/content/images/2022/07/c--imm.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Articolo originale:</strong> <a href="https://www.freecodecamp.org/news/c-compiler-explained-what-is-the-compiler-and-how-do-you-use-it/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">C++ Compiler Explained: What is the Compiler and How Do You Use it?</a>
      </p><h2 id="introduzione-ai-compilatori-c-"><strong>Introduzione ai compilatori C++</strong></h2><p>Prima di iniziare ad utilizzare C++, è bene che tu impari qualcosa a riguardo dei compilatori e come viene eseguito C++ sul tuo computer.</p><p>In fin dei conti, i computer comprendono soltanto una lingua, il linguaggio macchina, che è interamente costituito da codice binario, una sequenza di 0 e 1.</p><p>Nonostante sia possibile programmare in binario, sarebbe incredibilmente fastidioso e occorrerebbe una grande quantità di tempo per farlo effettivamente. Per questo, sono stati creati linguaggi di programmazione che semplificano lo sviluppo dei software.</p><p>Il linguaggio assembly ha una corrispondenza diretta con il linguaggio macchina. Linguaggi come C, C++ e COBOL sono di livello un po' più alto e necessitano di essere compilati. Ma si può andare ben oltre. Linguaggi come JavaScript e Python hanno componenti che vengono tradotte in C++ o altri linguaggi prima di essere compilati, facendo sì che siano effettivamente di un livello più alto rispetto a C o C++.</p><p>Dato che l'architettura di un computer è composta da una serie di componenti che funzionano soltanto con il codice binario (sequenze di 0 e 1), hai bisogno di un compilatore per tradurre il codice dal livello di C++ fino al linguaggio macchina comprensibile dalla CPU.</p><h2 id="come-funzionano-i-compilatori"><strong>Come funzionano i compilatori</strong></h2><p>I compilatori sono programmi di utilità che prendono il tuo codice e lo trasformano in file eseguibili in codice macchina.</p><p>Durante il processo di compilazione, per prima cosa, il preprocessore legge il codice sorgente (il file C++ che hai scritto) e cerca delle direttive particolari (le righe che iniziano con un #). Le direttive di precompilazione fanno sì che il preprocessore modifichi il codice (di solito, aggiungendo delle librerie o altri file C++).</p><p>In seguito, il compilatore lavora sul codice preprocessato traducendolo riga per riga in istruzioni in un linguaggio macchina adeguato. In caso di errori di sintassi nel codice sorgente, viene restituito un errore sulla riga di comando.</p><p>Infine, se non sono presenti errori, il compilatore crea un file oggetto nel linguaggio macchina necessario per l'esecuzione sul tuo computer. Nonostante il file oggetto che il compilatore ha appena creato, con ogni probabilità, è in grado di fare qualcosa sul tuo computer, non è ancora un programma in C++ funzionante. C'è un ultimo passaggio affinché diventi un programma eseguibile.</p><p>C++ contiene delle vaste librerie con per aiutare a svolgere attività complicate come la manipolazione di I/O e hardware. Puoi includere queste librerie con le direttive di precompilazione, ma il preprocessore non le include automaticamente nel tuo codice.</p><p>Per ottenere un programma eseguibile, un'altra utilità, nota come linker, deve combinare i tuoi file oggetto con le funzioni della libreria necessarie all'esecuzione del codice.</p><p>Immagina di avere tutti mattoni necessari per costruire una casa. Il compilatore ha realizzato tutti i mattoni, ma il linker è necessario per farli stare insieme e costruire la casa. Una volta fatto questo, hai un file eseguibile funzionante!</p><h2 id="come-compilare-un-file"><strong><strong>Come compilare un<strong> file</strong></strong></strong></h2><p>Supponiamo di avere un file in C++ chiamato <code>helloWorld.cpp</code> …</p><h3 id="su-windows"><strong><strong>Su<strong> Windows</strong></strong></strong></h3><h4 id="usando-ide-come-codeblocks"><strong><strong>Usando<strong> IDE </strong>come <strong>CodeBlocks</strong></strong></strong></h4><p>Basta cliccare sul pulsante run per creare un file nella cartella del progetto.</p><h4 id="usando-il-prompt-dei-comandi"><strong><strong>Usando il prompt dei comandi</strong></strong></h4><ol><li>Apri un prompt dei comandi per sviluppatori - Per questo passaggio, avrai bisogno di Microsoft Visual Studio o di qualche IDE che ti permette di compilare il tuo programma dalla riga di comando. Puoi anche cercare dei compilatori C++ online .</li><li>Vai direttamente al codice sorgente</li><li>Esegui il compilatore sul tuo codice sorgente (se stai usando il compilatore di Microsoft Visual Studio) <code>cl /EHsc helloWorld.cpp</code><br>In questo modo, verrà creato un file oggetto, e poi collegato automaticamente. Se controlli nella stessa cartella, vedrai un file eseguibile <code>helloWorld.exe</code> (nota l'estensione)</li><li>Scrivi <code>helloWorld</code> sul prompt ed esegui il file</li></ol><p>Alternativamente, molti IDE permettono di costruire rapidamente e vedere il tuo programma. Questa opzione potrebbe essere più semplice dato che la tua versione di Windows potrebbe non essere dotata di un compilatore.</p><h3 id="su-linux-o-osx"><strong><strong>Su<strong> Linux o OSX</strong></strong></strong></h3><ol><li>Apri la finestra del terminale e vai sulla cartella con il codice sorgente</li><li>Esegui il compilatore sul tuo codice sorgente <code>g++ helloWorld.cpp -o helloWorld</code><br>Verrà creato un file oggetto, e poi collegato automaticamente. Se controlli nella stessa cartella, vedrai un file eseguibile <code>helloWorld.exe</code> (nota l'estensione)</li><li>Scrivi <code>./helloWorld</code> nella finestra del terminale per eseguire il file</li></ol><p>g++ è il compilatore standard di Linux in dotazione col sistema operativo ed è di grande utilità.</p><p>NOTA: per compilare ed eseguire direttamente il tuo codice, esegui <code>g++ -o helloWorld helloWorld.cpp; ./helloWorld</code>, così quando hai bisogno di compilare ed eseguire del codice ripetutamente, puoi utilizzare la freccia su + invio.</p><p>Esistono tanti altri tipi di compilatori. I due menzionati qui sono quelli normalmente in dotazione con Windows o Linux/OSX.</p><h2 id="pi-info-on-c-"><strong>Più info on C++</strong></h2><ul><li><a href="https://www.freecodecamp.org/news/the-c-plus-plus-programming-language/"></a><a href="https://www.freecodecamp.org/italian/news/il-linguaggio-di-programmazione-c/">Introduzione alla programmazione in C++</a></li><li><a href="https://www.freecodecamp.org/news/object-oriented-programming-in-c/">Object-oriented programming in C++</a></li><li><a href="https://www.freecodecamp.org/news/graph-algorithms-and-data-structures-explained-with-java-and-c-examples/">Graph algorithms and data structures explained in C++ and Java</a></li><li><a href="https://www.freecodecamp.org/news/how-to-compile-your-c-code-in-visual-studio-code/">How to compile your C++ code in VS Code</a></li></ul> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Come compilare il tuo codice C++ su Visual Studio Code ]]>
                </title>
                <description>
                    <![CDATA[ C++ è un linguaggio di programmazione general purpose di livello intermedio, staticamente tipizzato, in forma libera, compilato (di solito) e multi-paradigma.  In parole povere, C++ è un linguaggio di programmazione sofisticato ed efficiente basato su C. È stato sviluppato da Bjarne Stroustrup [http://www.stroustrup.com/] nel 1979. Una delle caratteristiche principali ]]>
                </description>
                <link>https://www.freecodecamp.org/italian/news/come-compilare-il-tuo-codice-c-su-visual-studio-code/</link>
                <guid isPermaLink="false">62e8fb4f5cda1d06d40db58b</guid>
                
                    <category>
                        <![CDATA[ C++ ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Dario Di Cillo ]]>
                </dc:creator>
                <pubDate>Tue, 09 Aug 2022 05:30:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/italian/news/content/images/2022/08/banner-1.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Articolo originale:</strong> <a href="https://www.freecodecamp.org/news/how-to-compile-your-c-code-in-visual-studio-code/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to compile your C++ code in Visual Studio Code</a>
      </p><p>C++ è un linguaggio di programmazione general purpose di livello intermedio, staticamente tipizzato, in forma libera, compilato (di solito) e multi-paradigma. </p><p>In parole povere, C++ è un linguaggio di programmazione sofisticato ed efficiente basato su C.</p><p>È stato sviluppato da <a href="http://www.stroustrup.com/">Bjarne Stroustrup</a> nel 1979.</p><p>Una delle caratteristiche principali di C++ è il compilatore, usato per compilare ed eseguire il codice C++.</p><blockquote>Un compilatore è un programma speciale che elabora le istruzioni scritte in un particolare linguaggio di programmazione come C++ e le converte in linguaggio macchina o nel "codice" usato dal processore di un computer. (<a href="https://en.wikipedia.org/wiki/Compiler">fonte</a>)</blockquote><p>Ho scritto questo articolo perché dovevo svolgere un progetto in C++ che richiedeva un compilatore. Di solito, tutti utilizzano degli ambienti di sviluppo integrato (IDE) come <a href="http://www.codeblocks.org/">CodeBlocks</a> o <a href="https://visualstudio.microsoft.com/">Visual Studio</a>, ma ero già abituato a Visual Studio Code, così ho trovato un modo per compilare C++ direttamente all'interno dell'editor. Ed ecco l'articolo :)</p><p>In quest'articolo, ti mostrerò come impostare il tuo compilatore in VSCode.</p><figure class="kg-card kg-image-card"><img src="https://media0.giphy.com/media/3o7TKUM3IgJBX2as9O/giphy.gif" class="kg-image" alt="giphy" width="267" height="200" loading="lazy"></figure><h1 id="prerequisiti"><strong><strong>Prerequisit</strong>i</strong></h1><ul><li>Conoscenza pregressa di C++ (immagino che tu stia imparando C++, che tu abbia appena iniziato o che stia leggendo solo per divertimento. Questo non è un tutorial introduttivo – è richiesta una certa comprensione di C++)</li><li>Visual Studio Code Editor<br>Puoi scaricarlo <a href="https://code.visualstudio.com/#alt-downloads">qui</a> &nbsp;e leggere la documentazione per la configurazione per <a href="https://code.visualstudio.com/docs/?dv=win">Windows</a>, <a href="https://code.visualstudio.com/docs/?dv=linux64_deb">Linux</a> e <a href="https://code.visualstudio.com/docs/?dv=osx">Mac</a></li><li><strong>Connessione Internet<strong> (important</strong>e!<strong>)</strong></strong></li></ul><h3 id="avvertenza-"><strong>Avvertenza<strong><strong><strong>!</strong></strong></strong></strong></h3><p>Userò il sistema operativo Windows per tutto l'articolo, ma ti fornirò anche dei link a risorse utili per altri sistemi operativi.</p><p>E adesso iniziamo!</p><h1 id="scaricare-e-installare-il-compilatore-c-"><strong>Scaricare e installare il compilatore C++</strong></h1><ul><li>Vai su www.mingw.org e clicca sul link “Download/Installer” per scaricare il file di setup MinGW, o clicca <a href="https://osdn.net/projects/mingw/downloads/68260/mingw-get-setup.exe/">qui</a> per Windows, <a href="http://www.mingw.org/wiki/LinuxCrossMinGW">qui</a> per Linux e <a href="https://brewinstall.org/Install-mingw-w64-on-Mac-with-Brew/">qui</a> per Mac</li></ul><blockquote>MinGW, contrazione di "Minimalist GNU for Windows", è un ambiente di sviluppo minimalista per applicazioni di Microsoft Windows. (<a href="https://mingw.osdn.io/">fonte</a>)</blockquote><ul><li>Una volta effettuato il download, installa MinGW e aspetta lo strumento di intallazione “MinGW Installation Manager”.</li></ul><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2019/10/Capture1.png" class="kg-image" alt="Capture1" width="600" height="400" loading="lazy"></figure><ul><li>Quando vedi “MinGW Installation Manager”, clicca su <code>mingw32-gcc-g++</code> e poi seleziona “Mark for Installation”</li></ul><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2019/10/Capture2.png" class="kg-image" alt="Capture2" width="600" height="400" loading="lazy"></figure><ul><li>Nel menu nell'angolo in alto a sinistra clicca su “Installation &nbsp;&gt; Apply Changes”</li></ul><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2019/10/Capture3.png" class="kg-image" alt="Capture3" width="600" height="400" loading="lazy"></figure><ul><li>Aspetta che l'installazione sia completa e assicurati di avere una connessione a Internet stabile durante il processo.</li></ul><h1 id="aggiungi-la-cartella-in-cui-si-trova-il-compilatore-c-alla-variabile-di-ambiente-path"><strong>Aggiungi la cartella in cui si trova il compilatore<strong> C++</strong> alla variabile di ambiente<strong> PATH</strong></strong></h1><blockquote>Nei sistemi operativi Unix e simili, DOS, OS/2 e Microsoft Windows, PATH è una variabile di ambiente che specifica un insieme di cartelle in cui si trovano dei programmi eseguibili. In generale, ogni processo in esecuzione o sessione utente ha le proprie impostazioni PATH. - <a href="https://en.wikipedia.org/wiki/PATH_(variable)">Wikipedia</a></blockquote><p>Dopo aver installato MinGW, puoi trovarlo in &nbsp;<code>C:\MinGW\bin</code>. Quello che devi fare è includere questa cartella nella variabile di ambiente PATH. Se non sai come svolgere questa operazione, ecco alcune risorse utili:</p><ul><li>Clicca <a href="https://www.computerhope.com/issues/ch000549.htm">qui</a> per Windows</li><li>Clicca <a href="https://www.cyberciti.biz/faq/unix-linux-adding-path/">qui</a> per Linux</li><li>Clicca <a href="https://hathaway.cc/2008/06/how-to-edit-your-path-environment-variables-on-mac/">qui</a> per Mac</li></ul><h1 id="installa-l-estensione-di-vs-code-code-runner"><strong><strong>Install</strong>a l'estensione di VS Code<strong> Code Runner</strong></strong></h1><p>Adesso che il compilatore è pronto, installiamo Code Runner.</p><p>Code Runner permette l'esecuzione di snippet di codice o di file per linguaggi multipli:</p><blockquote>C, C++, Java, JavaScript, PHP, Python, Perl, Perl 6, Ruby, Go, Lua, Groovy, PowerShell, BAT/CMD, BASH/SH, F# Script, F# (.NET Core), C# Script, C# (.NET Core), VBScript, TypeScript, CoffeeScript, Scala, Swift, Julia, Crystal, OCaml Script, R, AppleScript, Elixir, Visual Basic .NET, Clojure, Haxe, Objective-C, Rust, Racket, AutoHotkey, AutoIt, Kotlin, Dart, Free Pascal, Haskell, Nim, D, Lisp, Kit e comandi personalizzati.</blockquote><ul><li>Clicca <a href="https://marketplace.visualstudio.com/items?itemName=formulahendry.code-runner">qui</a> per il download</li><li>O ricerca nella scheda marketplace su VSCode</li></ul><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2019/10/Capture4.png" class="kg-image" alt="Capture4" width="600" height="400" loading="lazy"></figure><ul><li>Dopo l'installazione riavvia VSCode</li><li>Apri il tuo file C++ su VSCode. Ecco un programma "Hello world!":</li></ul><pre><code class="language-c">#include &lt;iostream&gt;
using namespace std;
int main() 
{
    cout &lt;&lt; "Hello world!";
    return 0;
}
</code></pre><p>Salva questo file come <code>test.cpp</code></p><h1 id="esegui-il-tuo-codice-con-code-runner"><strong>Esegui il tuo codice con<strong> Code Runner</strong></strong></h1><ul><li>Usa la scorciatoia <code>Ctrl+Alt+N</code></li><li>O premi F1 e poi seleziona/digita Run Code</li><li>O clicca col tasto destro sull'editor di testo e poi clicca Run Code nel menu pop-up dell'editor</li></ul><p>Il codice verrà eseguito e l'output mostrato nella finestra di output.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2019/10/Capture5.png" class="kg-image" alt="Capture5" width="600" height="400" loading="lazy"></figure><h1 id="interrompere-l-esecuzione-del-codice">Interrompere l'esecuzione del codice</h1><ul><li>Usa la scorciatoia <code>Ctrl+Alt+M</code></li><li>O premi F1 e poi seleziona/digita Stop Code Run</li><li>O clicca col tasto destro su Output Channel e poi clicca Stop Code Run nel menu pop-up</li></ul><p>Congratulazioni, hai impostato con successo il tuo ambiente C++ su VSCode!</p><h1 id="conclusione"><strong><strong>Conclusion</strong>e</strong></h1><p>Un piccolo suggerimento: di default, il terminale di output di VSCode è di sola lettura. Se stai eseguendo del codice che richiede un input da un utente come questo:</p><pre><code class="language-c">#include &lt;iostream&gt;
using namespace std;

const double pi = 3.14159; 

void calculate()
{
  double area; 
  double radius;

  cout&lt;&lt;"Enter Radius: "&lt;&lt;endl; 
  cin&gt;&gt;radius;

  area = pi * radius * radius; 

  cout&lt;&lt;"area is: "&lt;&lt;area&lt;&lt;endl;
 }
 
int main()
{
  calculate(); 
  return 0;
}
</code></pre><p>non sarai in grado di scrivere nel terminale, <code>Cannot edit in read-only terminal</code>.<br>Per risolvere questo problema, dovrai impostare manualmente la modalità read-write.</p><ul><li>Su VSCode, vai su File &gt; Preference &gt; Setting.</li><li>Nella scheda User nel pannello sulla sinistra, trova la sezione estensioni</li><li>Scorri e trova 'Run Code Configuration'</li><li>Scorri, trova e seleziona la casella di spunta <code>Run in Terminal</code></li></ul><p>Oppure</p><ul><li>Nel file <code>setting.json</code>, aggiungi:</li></ul><pre><code>"code-runner.runInTerminal": true
</code></pre><p>Adesso sei pronto per cominciare :)</p><p>Grazie per aver letto quest'articolo!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Il linguaggio di programmazione C++ ]]>
                </title>
                <description>
                    <![CDATA[ C++ è un linguaggio di programmazione general purpose utilizzato fin dagli anni '90. È stato progettato da Bjarne Stroustrup con il nome di “C con classi”. È una versione di C che include elementi di programmazione orientata agli oggetti, tra cui classi e funzioni. È considerato uno dei più importanti ]]>
                </description>
                <link>https://www.freecodecamp.org/italian/news/il-linguaggio-di-programmazione-c/</link>
                <guid isPermaLink="false">62d7fd555cda1d06d40d93a0</guid>
                
                    <category>
                        <![CDATA[ C++ ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Dario Di Cillo ]]>
                </dc:creator>
                <pubDate>Mon, 01 Aug 2022 05:30:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/italian/news/content/images/2022/07/c--.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Articolo originale:</strong> <a href="https://www.freecodecamp.org/news/the-c-plus-plus-programming-language/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">The C++ Programming Language</a>
      </p><p>C++ è un linguaggio di programmazione <em>general purpose</em> utilizzato fin dagli anni '90. È stato progettato da Bjarne Stroustrup con il nome di “C con classi”.</p><p>È una versione di C che include elementi di programmazione orientata agli oggetti, tra cui classi e funzioni.</p><p>È considerato uno dei più importanti linguaggi di programmazione, come puoi vedere nell'immagine seguente:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/italian/news/content/images/2022/07/image-17.png" class="kg-image" alt="image-17" srcset="https://www.freecodecamp.org/italian/news/content/images/size/w600/2022/07/image-17.png 600w, https://www.freecodecamp.org/italian/news/content/images/size/w1000/2022/07/image-17.png 1000w, https://www.freecodecamp.org/italian/news/content/images/2022/07/image-17.png 1200w" sizes="(min-width: 720px) 720px" width="1200" height="936" loading="lazy"><figcaption>fonte: github</figcaption></figure><h2 id="hello-world-in-c-">Hello World in C++</h2><pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;
int main()
{
    cout &lt;&lt; "Hello World" &lt;&lt; endl;
    return 0;
}</code></pre><p>L'output di questo programma sarà semplicemente:</p><pre><code class="language-text">Hello World!</code></pre><p>Analizziamo il codice:</p><h3 id="righe-1-e-2">Righe 1 e 2</h3><pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;</code></pre><p>La prima riga comunica al computer di usare il file di intestazione <code>iostream</code> per questo specifico programma. Un file di intestazione è un file separato con del codice C++ già scritto.</p><p>Ci sono molti altri file di intestazione che sono richiesti affinché un programma venga eseguito appropriatamente. Alcuni esempi sono: <code>math</code>, <code>vector</code> e <code>string</code>. I file di intestazione sono generalmente rappresentati dall'estensione <code>.h</code> (non hai bisogno di aggiungere <code>.h</code> includendo le librerie di file standard C++). </p><p><code>iostream</code> sta per "input-output stream". Il file <code>iostream</code> contiene il codice che permette al computer di prendere un input e generare un output, usando il codice C++.</p><p>La seconda riga dice al computer di usare il namespace standard che include le funzionalità standard di C++.</p><p>Potresti scrivere il programma senza questa riga, ma usando <code>std::cout</code> invece di <code>cout</code> e <code>std::endl</code> invece di <code>endl</code> nella riga 4. Rende il codice più leggibile e le nostre vite da programmatori più semplici.</p><h3 id="righe-3-e-4">Righe 3 e 4</h3><pre><code class="language-cpp">int main()
{</code></pre><p>C++ inizia l'esecuzione di un programma dalla funzione globale <code>main()</code>, dichiarata con <code>int main()</code>. Durante l'esecuzione il computer inizia a eseguire il codice riga per riga dalla parentesi di apertura <code>{</code> fino a quella di chiusura <code>}</code>.</p><p>Nota che ogni funzione inizia con <code>{</code> e finisce con <code>}</code>.</p><p>La riga 4 indica l'inizio della funzione <code>main()</code> con la parentesi di apertura.</p><h3 id="righe-5-6-e-7">Righe 5, 6 e 7</h3><pre><code class="language-cpp">    cout &lt;&lt; "Hello World" &lt;&lt; endl;
    return 0;
}</code></pre><p>La parola <code>cout</code> in C++ è l'abbreviazione per "character output" ed è usata per mostrare l'output direttamente sullo schermo.</p><p>È seguita da <code>&lt;&lt;</code>, l'<em><em>operator</em>e di inserimento</em>. Gli operatori di inserimento mandano i dati agli operatori di flusso che vengono prima di loro.</p><p>Poi c'è la frase <code>Hello World</code> tra virgolette (<code>"</code>). Tutto quello che si trova tra le virgolette è una stringa. Questa è una stringa con caratteri standard, ma alcuni caratteri speciali hanno una sintassi diversa per le espressioni per stampare l'output.</p><p>Quindi l'operatore di inserimento, <code>&lt;&lt;</code>, passa la stringa <code>"Hello World"</code> all'oggetto <code>cout</code>.</p><p>Se guardi alla fine della riga c'è un altro operatore di inserimento <code>endl</code>.</p><p><code>endl</code> è una parola riservata nel linguaggio C++, e sta per "end line" ("fine riga"). In C++ puoi usare l'oggetto <code>endl</code> per terminare la riga corrente, ripulire il flusso e andare alla prossima riga dell'output. Infine, il comando viene concluso con punto e virgola <code>;</code>.</p><p>Sulla riga 6 <code>return 0;</code> termina in modo sicuro la funzione attuale (<code>main()</code>, in questo caso) e dato che dopo non è presente nessuna funzione, il programma termina.</p><p>Infine, nella riga 7 la funzione termina con una parentesi di chiusura <code>}</code>. Se non termini una funzione con una parentesi incapperai in un errore di esecuzione.</p><h2 id="ecco-come-dovrebbe-essere-il-codice-">Ecco come dovrebbe essere il codice:</h2><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/italian/news/content/images/2022/07/c--code.png" class="kg-image" alt="c--code" srcset="https://www.freecodecamp.org/italian/news/content/images/size/w600/2022/07/c--code.png 600w, https://www.freecodecamp.org/italian/news/content/images/2022/07/c--code.png 896w" sizes="(min-width: 720px) 720px" width="896" height="583" loading="lazy"></figure><p>Congratulazioni! Hai scritto il tuo primo programma in C++! </p><p>Per compilare ed eseguire il tuo programma, consulta questi tutorial:</p><ul><li><a href="https://www.freecodecamp.org/italian/news/compilatore-c-cose-un-compilatore-e-come-funziona/">Compilatore C++: cos'è un compilatore e come funziona?</a></li><li><a href="https://www.freecodecamp.org/italian/news/come-compilare-il-tuo-codice-c-su-visual-studio-code/">Come compilare il tuo codice C++ su </a><a href="https://www.freecodecamp.org/news/how-to-compile-your-c-code-in-visual-studio-code/">Visual Studio Code</a></li></ul> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Stringa in C++ – Esempio di std::string in C++ ]]>
                </title>
                <description>
                    <![CDATA[ Le stringhe sono componenti essenziali in qualsiasi linguaggio di programmazione e C++ non fa eccezione. Sia che tu voglia archiviare testo, manipolarlo o accettare input e output da tastiera, capire cosa sono le stringhe e come usarle in modo efficace è estremamente importante. Questo articolo insegnerà tutto ciò che devi ]]>
                </description>
                <link>https://www.freecodecamp.org/italian/news/stringa-in-cpp-std-string-esempio-in-cpp/</link>
                <guid isPermaLink="false">620fe20c88090d0542dcbefd</guid>
                
                    <category>
                        <![CDATA[ C++ ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Angelo Mirabelli ]]>
                </dc:creator>
                <pubDate>Fri, 25 Feb 2022 10:46:26 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/italian/news/content/images/2022/02/c---string.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Articolo originale:</strong> <a href="https://www.freecodecamp.org/news/c-string-std-string-example-in-cpp/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">C++ String – std::string Example in C++</a>
      </p><p>Le stringhe sono componenti essenziali in qualsiasi linguaggio di programmazione e C++ non fa eccezione.</p><p>Sia che tu voglia archiviare testo, manipolarlo o accettare input e output da tastiera, capire cosa sono le stringhe e come usarle in modo efficace è estremamente importante.</p><p>Questo articolo insegnerà tutto ciò che devi sapere sulla gestione e l'utilizzo delle stringhe in C++.</p><h2 id="cos-una-stringa"><strong>Cos'è una stringa?</strong></h2><p>Le stringhe, al loro interno, sono essenzialmente insiemi di caratteri. Alcuni esempi possono essere "Ciao Mondo", "Il mio nome è Jason" e così via. Sono racchiusi tra virgolette <code>"</code>.</p><p>In C++ abbiamo due tipi di stringhe:</p><ol><li>Stringhe in C-style</li><li><code>std::string</code> (dalla classe Standard di stringa C++ )</li></ol><p>Puoi facilmente creare la tua classe di stringhe con le loro piccole funzioni, ma non è qualcosa di cui parleremo in questo articolo.</p><h1 id="stringhe-in-c-style"><strong>Stringhe in C-style</strong></h1><p>Si tratta di stringhe derivate dal linguaggio di programmazione C e continuano ad essere supportate in C++. Queste "raccolte di caratteri" sono archiviate sotto forma di array di tipo <code>char</code> con <em><em>terminazione</em></em> null (il carattere null &nbsp;<code>\0</code>).</p><h4 id="come-definire-una-stringa-in-c-style-"><strong>Come definire una stringa in C-style:</strong></h4><pre><code class="language-c">char str[] = "c string";</code></pre><p>Qui <code>str</code> è un array di <code>char</code> di lunghezza <code>9</code> (il carattere extra deriva dal carattere null <code>\0</code> aggiunto dal compilatore).</p><p>Ecco alcuni altri modi per definire le stringhe in C-style in C++:</p><pre><code class="language-c">char str[9] = "c string";
char str[] = {'c', ' ', 's', 't', 'r', 'i', 'n', 'g', '\0'};
char str[9] = {'c', ' ', 's', 't', 'r', 'i', 'n', 'g', '\0'};</code></pre><h4 id="come-passare-stringhe-in-c-style-a-una-funzione"><strong>Come passare stringhe in C-style a una funzione</strong></h4><pre><code class="language-c">#include &lt;iostream&gt;

int main() {
    char str[] = "Questa è una stringa in C-style";
    display(str);
}

// Le stringhe in C-style possono essere passate alle funzioni come segue:
void display(char str[]) {
    std::cout &lt;&lt; str &lt;&lt; "\n";
}</code></pre><h3 id="come-utilizzare-le-funzioni-di-stringa-in-c-style-in-c-"><strong>Come utilizzare le funzioni di stringa in C-style in C++</strong></h3><p>La libreria Standard di C &nbsp;include un paio di utili funzioni che puoi usare per manipolare le stringhe. Sebbene non sia ampiamente consigliato l'uso (vedi sotto), puoi comunque usarli nel codice C++ includendo l'intestazione &nbsp;<code>&lt;cstring&gt;</code>:</p><pre><code>#include &lt;cstring&gt; // necessario


1. strcpy(s1,s2) --&gt; Copia la stringa s2 nella stringa s1                 
2. strcat(s1,s2) --&gt; Concatena la stringa s2 alla fine della stringa s1
3. strlen(s1)    --&gt; Restituisce la lunghezza della stringa s1          
4. strcmp(s1,s2) --&gt; Restituisce 0 se s1==s2; minore di 0 se s1&lt;s2; maggiore di 0 se s1&gt;s2
5. strchr(s1,ch) --&gt; Restituisce un puntatore alla prima occorrenza del carattere ch nella stringa s1
6. strstr(s1,s2) --&gt; Restituisce un puntatore alla prima stringa s2 nella stringa s1      </code></pre><h1 id="std-string"><strong>std::string</strong></h1><p>Le stringhe in C-style sono relativamente <em><em>pericolose</em></em>: se la stringa e l'array di char non sono terminate con null, si può avere tutta una serie di potenziali bug.</p><p>Ad esempio, gli <a href="https://en.wikipedia.org/wiki/Buffer_overflow">overflow del buffer</a> tra <a href="https://stackoverflow.com/questions/312570/what-are-some-of-the-drawbacks-to-using-c-style-strings">tutta una serie di altri inconvenienti</a>, sono alcuni dei motivi per cui l'uso di stringhe in C-style non è raccomandato nella comunità degli sviluppatori C++.</p><p>La classe <code>std::string</code> fornita dalla libreria Standard C++ è un'alternativa molto più sicura. Ecco come usarla:</p><h4 id="come-definire-una-std-string"><strong>Come definire una <code>std::string</code></strong></h4><pre><code class="language-c">#include &lt;iostream&gt; 
#include &lt;string&gt; // la classe standard di stringhe di C++

int main() {
    std::string str = "Stringa C++";
    std::cout &lt;&lt; str &lt;&lt; "\n"; // stampa `Stringa C++`
}</code></pre><p>La differenza più ovvia da notare tra le stringhe in C-style e <code>std::string</code> &nbsp;è la <em><em>lunghezza</em></em> della stringa. Se hai bisogno della lunghezza di una stringa in C-style, dovrai calcolarla ogni volta usando la funzione <code>strlen()</code> in questo modo:</p><pre><code class="language-c">#include &lt;iostream&gt;
#include &lt;cstring&gt; // necessaria per usare `strlen`

int main() {
    char str[] = "Ciao mondo";
    std::cout &lt;&lt; strlen(str) &lt;&lt; "\n";
}</code></pre><p>Se non la memorizzi in una variabile e lo richiedi in più parti del tuo programma, puoi rapidamente osservare quanto sia costosa questa opzione.</p><p>Invece, una stringa <code>std::string</code> ha già in se una proprietà di lunghezza. Per accedervi si utilizza la proprietà <code>.length()</code> come segue:</p><pre><code class="language-c">#include &lt;iostream&gt;
#include &lt;string&gt; // necessaria per usare `std::string`

int main() {
    std::string str = "freeCodeCamp";
    std::cout &lt;&lt; str.length() &lt;&lt; "\n";
}</code></pre><p>Semplice, ordinato, conciso, con un'importante riduzione computazionale.</p><p>Ma l'accesso alla proprietà <em><em>length</em></em> non è l'unico vantaggio nell'utilizzo di <code>std::string</code>. Ecco qualche altro esempio:</p><pre><code class="language-c">#include &lt;iostream&gt;
#include &lt;string&gt;

int main() {
   std::string str = "freeCodeCamp";
   
   // Inserimento di un singolo carattere in `str`
   str.push_back('s');
   std::cout &lt;&lt; str &lt;&lt; "\n"; // `str` ora è `freeCodeCamps`
   
   // Eliminazione dell'ultimo carattere da `str`
   str.pop_back();
   std::cout &lt;&lt; str &lt;&lt; "\n"; // `str` ora è `freeCodeCamp`
   
   // Ridimensionamento di una stringa
   str.resize(13);
   std::cout &lt;&lt; str &lt;&lt; "\n"; 
   
   // Diminuzione della capacità in eccesso della stringa
   str.shrink_to_fit()
   std::cout &lt;&lt; str &lt;&lt; "\n";
}</code></pre><h4 id="come-passare-una-std-string-a-una-funzione"><strong>Come passare una <code>std::string</code> a una funzione</strong></h4><pre><code class="language-c">#include &lt;iostream&gt;

int main() {
    std::string str = "Questa è stringa C-style";
    display(str);
}

// Passare `std::string` è come passare semplicemente un oggetto normale
void display(std::string str) {
    std::cout &lt;&lt; str &lt;&lt; "\n";
}</code></pre><h2 id="quando-usare-una-stringa-in-c-style-su-std-string"><strong>Quando usare una stringa in C-style su <code>std::string</code>?</strong></h2><p>A questo punto, dovresti essere convinto dei numerosi vantaggi che <code>std::string</code> ha rispetto alle stringhe in C-style (in particolare la gestione automatica della memoria). Ma ci sono situazioni in cui vorresti invece usare stringhe in C-style:</p><ol><li>Se vieni da un background in C, potresti essere a tuo agio nel lavorare con le stringhe in C-style.</li><li>Una <code>std::string</code>, nonostante i suoi vantaggi, è estremamente complessa. Come il resto della lingua, se non sai cosa stai facendo, può, velocemente, diventare molto complicato. Inoltre, utilizza una tonnellata di memoria che potrebbe non essere l'ideale per gli scopi dei tuoi programmi.</li><li>Se stai attento a gestire la memoria del tuo programma durante il runtime (liberando la memoria di un oggetto quando hai finito di usarlo), c'è un vantaggio in termini di prestazioni nell'usare stringhe in C-style considerando quanto sono piccole e leggere.</li></ol><h1 id="ricapitolando">Ricapitolando</h1><p>Spero che questo articolo sia servito come introduzione alle stringhe in C++. C'è <em><em>molto altro</em></em> da imparare su questa meravigliosa astrazione e spero di scrivere altri articoli che approfondiscano i concetti più avanzati di stringhe e C++.</p><p>Assicurati di <a href="http://twitter.com/jasmcaus">seguirmi su Twitter</a> per gli aggiornamenti sul mio percorso di apprendimento C++. Buon apprendimento!</p> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
