C++ 基礎(chǔ)教程

C++ 流程控制

C++ 函數(shù)

C++ 數(shù)組 & 字符串

C++ 數(shù)據(jù)結(jié)構(gòu)

C++ 類 & 對(duì)象

C++ 指針

C++ 繼承

C++ STL 教程

C++ 參考手冊(cè)

C++ 字符串

在本文中,您將學(xué)習(xí)如何在C中處理字符串。您將學(xué)習(xí)聲明它們,對(duì)其進(jìn)行初始化以及將它們用于各種輸入/輸出操作。

字符串是字符的集合。C ++編程語(yǔ)言中通常使用兩種類型的字符串:

  • 作為字符串類對(duì)象的字符串(標(biāo)準(zhǔn)C ++庫(kù)字符串類)

  • C字符串(C風(fēng)格的字符串)

C 風(fēng)格字符串

在C編程中,字符集合以數(shù)組的形式存儲(chǔ),C ++編程也支持這種形式。因此,它稱為C 風(fēng)格字符串(C-string)。

c -string是以null字符結(jié)尾的char類型的數(shù)組,即\0 (null字符的ASCII值為0)。

如何定義一個(gè)C字符串?

char str[] = "C++";

在上面的代碼中,str是一個(gè)字符串,它包含4個(gè)字符。

雖然“c++”有3個(gè)字符,但是null字符\0被自動(dòng)添加到字符串的末尾。

定義字符串的代替方法

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

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

與數(shù)組一樣,不需要使用為字符串分配的所有空間。例如:

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

示例1:使用C ++字符串讀取單詞

C ++程序顯示用戶輸入的字符串。

#include <iostream>
using namespace std;

int main()
{
    char str[100];

    cout << "輸入字符串: ";
    cin >> str;
    cout << "您輸入了: " << str << endl;

    cout << "\n輸入另一個(gè)字符串: ";
    cin >> str;
    cout << "您輸入了: "<<str<<endl;

    return 0;
}

輸出結(jié)果

輸入字符串: C++
您輸入了: C++

輸入另一個(gè)字符串: Programming is fun.
您輸入了: Programming

請(qǐng)注意,在第二個(gè)示例中,僅顯示“Programming”,而不是“Programming is fun.”。

這是因?yàn)樘崛∵\(yùn)算符>>與C語(yǔ)言中scanf()方法一樣,認(rèn)為空格“ ”具有終止字符。

示例2:C ++字符串以讀取一行文本

C ++程序讀取并顯示用戶輸入的整行。

#include <iostream>
using namespace std;

int main()
{
    char str[100];
    cout << "輸入一個(gè)字符串: ";
    cin.get(str, 100);

    cout << "您輸入了: " << str << endl;
    return 0;
}

輸出結(jié)果

輸入一個(gè)字符串: Programming is fun.
您輸入了: Programming is fun.

要讀取包含空格的文本,可以使用cin.get函數(shù)。該函數(shù)有兩個(gè)參數(shù)。

第一個(gè)參數(shù)是字符串的名稱(字符串的第一個(gè)元素的地址),第二個(gè)參數(shù)是數(shù)組的最大容量。

在上面的程序中,str是字符串的名稱,100是數(shù)組的最大容量。

字符串對(duì)象

在C ++中,您還可以創(chuàng)建一個(gè)用于保存字符串的字符串對(duì)象。

與使用char數(shù)組不同,字符串對(duì)象沒有固定的長(zhǎng)度,可以根據(jù)需要進(jìn)行擴(kuò)展。

示例3:使用字符串?dāng)?shù)據(jù)類型的C ++字符串

#include <iostream>
using namespace std;

int main()
{
    //聲明一個(gè)字符串對(duì)象
    string str;
    cout << "輸入字符串: ";
    getline(cin, str);

    cout << "您輸入了: " << str << endl;
    return 0;
}

輸出結(jié)果

輸入字符串: Programming is fun.
您輸入了: Programming is fun.

在此程序中,str聲明了一個(gè)字符串。然后從用戶詢問字符串。

除了使用cin>>或cin.get()函數(shù)外,還可以使用getline()來獲取輸入的文本行。

getline()函數(shù)將輸入流作為第一個(gè)參數(shù),cin和str作為要存儲(chǔ)的行的位置。

將字符串傳遞給函數(shù)

字符串以類似的方式傳遞給函數(shù),數(shù)組也可以傳遞給函數(shù)

#include <iostream>

using namespace std;

void display(char *);
void display(string);

int main()
{
    string str1;
    char str[100];

    cout << "輸入字符串: ";
    getline(cin, str1);

    cout << "輸入另一個(gè)字符串: ";
    cin.get(str, 100, '\n');

    display(str1);
    display(str);
    return 0;
}

void display(char s[])
{
    cout << "輸入的字符數(shù)組為: " << s << endl;
}

void display(string s)
{
    cout << "輸入的字符串是: " << s << endl;
}

輸出結(jié)果

輸入字符串:  Programming is fun.
輸入另一個(gè)字符串:  Really?
輸入的字符串是: Programming is fun.
輸入的字符數(shù)組為: Really?

在上面的程序中,要求輸入兩個(gè)字符串。它們分別存儲(chǔ)在str和str1中,其中str是一個(gè)char數(shù)組,而str1是一個(gè)string對(duì)象。

然后,我們有兩個(gè)函數(shù)display(),它們將字符串輸出到字符串中。

這兩個(gè)函數(shù)之間的唯一區(qū)別是參數(shù)。第一個(gè)display()函數(shù)將char數(shù)組作為參數(shù),而第二個(gè)函數(shù)將string作為參數(shù)。

此過程稱為函數(shù)重載。了解有關(guān)函數(shù)重載的更多信息。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清