iT邦幫忙

2025 iThome 鐵人賽

DAY 9
0
自我挑戰組

C++入門即放棄系列 第 9

[DAY9]是完整的一句話!

  • 分享至 

  • xImage
  •  

字串是什麼?

📌 字串就是「連續的字元」

處理字串有兩種主要方式:

  • C 字串(傳統方式)
  • std::string

C 字串

📌 最後必須以 \0(null 字元) 作為結尾

📌#include <iostream>
	using namespace std;
	int main() 
	{
	    char name[20];   
	    cout << "請輸入名字: ";
	    cin >> name;    
	    cout << "你好, " << name << endl;
	    return 0;
	} 

C 字串 + 迴圈

📌#include <iostream>
	using namespace std;
	int main() 
	{
	    char words[5][20];
	    for (int i = 0; i < 5; i++) 
	    {
	        cin >> words[i]; 
	    }
	    return 0;
	}

std::string

📌 可使用「+」拼接字串、比較大小、取得長

📌 cin.ignore() → 清除緩衝區

📌 getline() → 讀取整行,避免遇到空白停止

📌#include <iostream>
	#include <string>
	using namespace std;

	int main() 
	{
	    string name;
	    cout << "請輸入名字: ";
	    cin >> name;
	    cout << "你好, " << name << endl;
	    cin.ignore(); 
	    string fullName;
	    cout << "請輸入全名: ";
	    getline(cin, fullName); 
	    cout << "歡迎, " << fullName << endl;
	    return 0;
	}

std::string + 迴圈

📌#include <iostream>
	#include <string>
	using namespace std;
	int main() 
	{
	    string words[5]; 
	    for (int i = 0; i < 5; i++) 
	    {
	        cin >> words[i]; 
	    }
	    return 0;
	}

字串vs陣列

陣列 字串
本質 一群相同型別的資料 一串字元組成的陣列
宣告方式 int score[5]; char name[10];string name;
內容儲存 整數、浮點數 字元序列
存取方式 score[0] = 90; name[0] = 'A';
問題 陣列溢位 忘記 \0
搭配迴圈 for (int i=0; i<5; i++) cout<<score[i]; for (int i=0; i<name.size(); i++) cout<<name[i];

結論

字串的處理方式主要有兩種

  • C 字串與
  • std::string

C 字串本質是字元陣列

需要小心處理 \0 結尾與陣列大小

容易因越界或缺少結束符號而出錯

std::string

能自動管理大小

並提供各種操作方法


上一篇
[DAY8]蓋起大樓的我!
系列文
C++入門即放棄9
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言