/*
4.字符串
xaye , 夏夜
C:char[] , char*
C++:string
string 是一個對象,會整體講對象的概念,我們會手寫一套自己的 string 類, 也是在std命名空間下
*/
#include<iostream>
//#include<cstring> // 要導入的頭文件
//#include<string>
using namespace std;
int main() {
// xaye , 夏夜
string name = {"xaye"};
cout << "My name is " << name << endl;
return 0;
}
xaye@orange:~/code/dev/10$ ./a.out
My name is xaye
#include<iostream>
//#include<cstring> // 要導入的頭文件
//#include<string>
using namespace std;
int main() {
// xaye , 夏夜
string name = {"xaye"};
cout << "My name is " << name << endl;
string name2 = "Xaye1";
cout << "name2 first is : " << name2[0] << endl;
return 0;
}
xaye@orange:~/code/dev/10$ ./a.out
My name is xaye
name2 first is : X
string 之所以可以用角標獲取 char 是因為 string 的運算符重載
#include<iostream>
//#include<cstring> // 要導入的頭文件
//#include<string>
using namespace std;
int main() {
// xaye , 夏夜
// 常見操作
string str1 = "penguin";
string str2, str3;
cout << "You can assign one string object to another : str2 = str1 " << endl;
str2 = str1;
cout << "str1: " << str1 << ", str2: " << str2 << endl;
str2 = "buzzard";
cout << "str2: " << str2 << endl;
str3 = str1 + str2;
cout << "str1 + str2 = " << str3 << endl;
str1 += str2; // 等價於 str1 = str1 + str2;
cout << "str2: " << str2 << endl;
str2 += "for a day";
cout << "str2: " << str2 << endl;
return 0;
}
xaye@orange:~/code/dev/10$ ./a.out
You can assign one string object to another : str2 = str1
str1: penguin, str2: penguin
str2: buzzard
str1 + str2 = penguinbuzzard
str2: buzzard
str2: buzzardfor a day
#include<iostream>
//‘strcat’ is defined in header ‘<cstring>’; did you forget to ‘#include <cstring>’?
#include<cstring> // 要導入的頭文件
//#include<string>
using namespace std;
int main() {
// xaye , 夏夜
char name1[] = {'1', '1', '1', '1', '\0'};
char name2[] = {'2', '2', '2', '2', '\0'};
char name3[20];
cout << "name1: " << name1 << ", name2: " << name2 << endl;
// 如果想 name2 +=name1
strcat(name2, name1);
cout << "name2 + name1 = " << name2 << endl;
// 如果想 name2 = name1 怎麼操作? strcpy 是一個c方法,c++中不常用
strcpy(name2, name1);
cout << "name1: " << name1 << ", name2: " << name2 << endl;
// 如果想要拼接? name3 = name1 + name2; strcat 也是一個c方法,c++中不常用
strcat(name3, name1);
strcat(name3, name2);
cout << "name3: " << name3 << endl;
return 0;
}
xaye@orange:~/code/dev/10$ ./a.out
name1: 1111, name2: 2222
name2 + name1 = 22221111
name1: 1111, name2: 1111
name3: 11111111111
#include<iostream>
#include<cstring> // 要導入的頭文件
//#include<string>
using namespace std;
int main() {
// xaye , 夏夜
string name1;
char name2[20];
cout << "name1 len: " << name1.size() << endl;
// 這種寫法 會讀到 \0 結束
cout << "name2 len: " << strlen(name2) << endl;
return 0;
}
xaye@orange:~/code/dev/10$ ./a.out
name1 len: 0
name2 len: 6 // char name2[20]
name2 len: 4 // char name2[20] = "xaye";