English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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)
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).
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.
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++";
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.
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.
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à.
#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.
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作为参数。
此过程称为函数重载。了解有关重载函数的更多信息。