C++ 字串
字串用於儲存文字。
一個字串變數包含由雙引號括起來的一組字元:
示例
建立一個 string 型別的變數併為其賦值:
string greeting = "Hello";
C++ 字串連線
字串連線可以使用 +
運算子來實現,生成一個新的字串。
示例:
string firstName = "John ";
string lastName = "Doe";
string fullName = firstName + lastName;
cout << fullName;
在上面的示例中,我們在 firstName
後面新增了一個空格,以便在輸出時在 "John" 和 "Doe" 之間生成一個空格。然而,你也可以用引號(" "
或 ' '
) 來新增一個空格:
示例:
string firstName = "John";
string lastName = "Doe";
string fullName = firstName + " " + lastName;
cout << fullName;
追加:
在 C++ 中,字串實際上是一個物件,其中包含可以對字串執行某些操作的函式。例如,你也可以使用 append()
函式連線字串:
示例:
string firstName = "John ";
string lastName = "Doe";
string fullName = firstName.append(lastName);
cout << fullName;
C++ 數字和字串
將數字和字串相加
C++ 使用 +
運算子既用於加法又用於連線。
- 數字相加。字串連線。
如果你將兩個數字相加,結果將是一個數字:
示例:
int x = 10;
int y = 20;
int z = x + y; // z 將是 30(一個整數)
如果你將兩個字串相加,結果將是字串連線:
示例:
string x = "10";
string y = "20";
string z = x + y; // z 將是 1020(一個字串)
如果你嘗試將一個數字新增到一個字串中,將會出現錯誤:
示例:
string x = "10";
int y = 20;
string z = x + y;
C++ 字串長度
要獲取字串的長度,可以使用 length() 函式:
示例
string txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
cout << "txt 字串的長度為: " << txt.length();
提示:你可能會看到一些 C++ 程式使用 size() 函式來獲取字串的長度。這只是 length() 的別名。完全取決於你是要使用 length() 還是 size():
示例
string txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
cout << "txt 字串的長度為: " << txt.size();
C++ 訪問字串
你可以透過在方括號 [] 內引用其索引號來訪問字串中的字元。
以下示例列印 myString 中的第一個字元:
示例
string myString = "Hello";
cout << myString[0];
// 輸出 H
注意:字串的索引從 0 開始:[0] 是第一個字元,[1] 是第二個字元,以此類推。
以下示例列印 myString 中的第二個字元:
示例
string myString = "Hello";
cout << myString[1];
// 輸出 e
更改字串字元
要更改字串中特定字元的值,請引用索引號,並使用單引號:
示例
string myString = "Hello";
myString[0] = 'J';
cout << myString;
// 輸出 Jello 而不是 Hello
C++ 特殊字元
因為字串必須用引號括起來,C++會誤解這個字串,並生成一個錯誤:
string txt = "We are the so-called "Vikings" from the north.";
避免這個問題的解決方案是使用反斜槓跳脫字元。
反斜槓 () 跳脫字元將特殊字元轉換為字串字元:
跳脫字元 結果 描述
' ' 單引號
" " 雙引號
\ \ 反斜槓
序列 " 在字串中插入雙引號:
string txt = "We are the so-called \"Vikings\" from the north.";
序列 ' 在字串中插入單引號:
string txt = "It\'s alright.";
序列 \ 在字串中插入單個反斜槓:
string txt = "The character \\ is called backslash.";
C++ 使用者輸入字串
可以使用提取運算子 >> 在 cin 上儲存使用者輸入的字串:
string firstName;
cout << "Type your first name: ";
cin >> firstName; // 從鍵盤獲取使用者輸入
cout << "Your name is: " << firstName;
// 輸入你的名字: John
// 你的名字是: John
然而,cin 將空格(空白、製表符等)視為終止字元,這意味著它只能儲存一個單詞(即使你輸入多個單詞):
string fullName;
cout << "Type your full name: ";
cin >> fullName;
cout << "Your name is: " << fullName;
// 輸入你的全名: John Doe
// 你的名字是: John
從上面的示例中,你會期望程式列印出 "John Doe",但它只列印出 "John"。
這就是為什麼在處理字串時,我們經常使用 getline() 函式來讀取一行文字。它以 cin 作為第一個引數,字串變數作為第二個引數:
string fullName;
cout << "Type your full name: ";
getline(cin, fullName);
cout << "Your name is: " << fullName;
// 輸入你的全名: John Doe
// 你的名字是: John Doe
C++ 字串名稱空間
你可能會看到一些 C++ 程式在沒有標準名稱空間庫的情況下執行。可以省略 using namespace std
這一行,並將其替換為 std
關鍵字,後面跟著 ::
運算子用於 string
(和 cout
)物件:
例子
#include <iostream>
#include <string>
int main() {
std::string greeting = "Hello";
std::cout << greeting;
return 0;
}
你可以選擇是否包含標準名稱空間庫。
最後
為了方便其他裝置和平臺的小夥伴觀看往期文章:
微信公眾號搜尋:Let us Coding
,關注後即可獲取最新文章推送
看完如果覺得有幫助,歡迎點贊、收藏、關注