English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

字符串 C++

In questo articolo, imparerai come gestire le stringhe in C. Imparerai a dichiararle, inizializzarle e utilizzarle per vari operazioni di input/output.

Le stringhe sono insiemi di caratteri. Nel linguaggio di programming C++, si utilizzano due tipi di stringhe:

  • Stringhe come oggetti della classe string (classe string della libreria standard C++)

  • Stringa C (stringa a stile C)

Stringa a stile C

Nel programming C, i set di caratteri vengono memorizzati come array, e il programming C++ supporta anche questo formato. Pertanto, viene chiamato stringa a stile C (stringa C-style).

Una stringa C è un array di tipo char che termina con un carattere nullo, ossia \0 (il valore ASCII del carattere nullo è 0).

Come definire una stringa C?

char str[] = "C++";

Nel codice sopra, str è una stringa che contiene 4 caratteri.

Nonostante "c++" abbia 3 caratteri, il carattere nullo \0 viene aggiunto automaticamente alla fine della stringa.

Metodi alternativi per definire una stringa

char str[4] = "C++";
     
char str[] = {'C','+','+','\0'};
char str[4] = {'C','+','+','\0'};

Come gli array, non è necessario utilizzare tutto lo spazio assegnato per la stringa. Ad esempio:

char str[100] = "C++";

Esempio 1: Utilizzo della stringa C++ per leggere una parola

Il programma C++ visualizza la stringa di input dell'utente.

#include <iostream>
using namespace std;
int main()
{
    char str[100];
    cout << "Inserisci una stringa: ";
    cin >> str;
    cout << "Hai inserito: " << str << endl;
    cout << "\nInserisci un'altra stringa: ";
    cin >> str;
    cout << "Hai inserito: "<<str<<endl;
    return 0;
}

Risultato di output

Inserisci una stringa: C++
Hai inserito: C++
Inserisci un'altra stringa: Programming is fun.
Hai inserito: Programming

Notare che nel secondo esempio, viene visualizzato solo "Programming", non "Programming is fun.".

Questo è perché l'operatore di estrazione >>, come il metodo scanf() nel linguaggio C, considera lo spazio " " come carattere di terminazione.

Esempio 2: La stringa C++ legge una riga di testo

Il programma C++ legge e visualizza l'intera riga di input dell'utente.

#include <iostream>
using namespace std;
int main()
{
    char str[100];
    cout << "Inserisci una stringa: ";
    cin.get(str, 100);
    cout << "Hai inserito: " << str << endl;
    return 0;
}

Risultato di output

Inserisci una stringa: Programming is fun.
Hai inserito: Programming is fun.

Per leggere un testo che contiene spazi, è possibile utilizzare la funzione cin.get(). Questa funzione ha due parametri.

Il primo parametro è il nome della stringa (l'indirizzo del primo elemento dell'array), il secondo parametro è la capacità massima dell'array.

Nel programma sopra, str è il nome della stringa, 100 è la capacità massima dell'array.

Oggetto stringa

In C++, è possibile anche creare un oggetto stringa per salvare stringhe.

A differenza di un array di char, l'oggetto stringa non ha una lunghezza fissa e può essere espanso a seconda delle necessità.

Esempio 3: Utilizzo di stringhe di tipo dati stringa C++

#include <iostream>
using namespace std;
int main()
{
    // Dichiarazione di un oggetto stringa
    string str;
    cout << "Inserisci una stringa: ";
    getline(cin, str);
    cout << "Hai inserito: " << str << endl;
    return 0;
}

Risultato di output

Inserisci una stringa: Programming is fun.
Hai inserito: Programming is fun.

In questo programma, str dichiara una stringa. Poi chiede all'utente di inserire una stringa.

Oltre a utilizzare cin>> o cin.get() funzione, è possibile utilizzare getline() per ottenere il testo di input.

La funzione getline() utilizza l'input stream come primo parametro, cin e str come posizione da cui memorizzare la riga.

Passare una stringa a una funzione

Le stringhe vengono passate a una funzione in modo simileGli array possono essere passati a una funzione.

#include <iostream>
using namespace std;
void display(char *);
void display(string);
int main()
{
    string str1;
    char str[100];
    cout << "Inserisci una stringa: ";
    getline(cin, str1);
    cout << "Inserisci un'altra stringa: ";
    cin.get(str, 100, '\n');
    display(str1);
    display(str);
    return 0;
}
void display(char s[])
{
    cout << "L'array di caratteri inserito è: " << s << endl;
}
void display(string s)
{
    cout << "La stringa inserita è: " << s << endl;
}

Risultato di output

Inserisci una stringa:  Programming is fun.
Inserisci un'altra stringa:  Really?
La stringa inserita è: Programming is fun.
输入的字符数组为: Really?

在上面的程序中,要求输入两个字符串。它们分别存储在str和str1中,其中str是一个char数组,而str1是一个string对象。

然后,我们有两个函数display(),它们将字符串输出到字符串中。

这两个函数之间的唯一区别是参数。第一个display()函数将char数组作为参数,而第二个函数将string作为参数。

此过程称为函数重载。了解有关重载函数的更多信息。