C++ Primer Plus书之--C++字符串

首先类似c语言里的字符串:

// 数组长度11实际上已经把字符串结尾的\0字符考虑进去了
char bird[11] = "Mr. Cheeps";
// 让编译器自己判断字符串的长度
char fish[] = "Bubbles";

假如有如下代码:

char boss[8] = "Bozo";

虽然长度是8实际上之后前五位有效也就是B,o,z,o,\0(表示字符串结尾)这五位后三位默认都是\0

注意's' 和 "s" 是不一样的前者便是字符s(ASCII码为83), 后者表示的是两个字符's'和'\0'组成的字符串

拼接字符串常量

c++里允许两个用引号括起来的字符串合并为一个, 也就是中间由空白(空格, 制表符, 换行符)链接的两个字符串都可以合成一个, 看如下代码:

#include "iostream"
using namespace std;

int main() {
	cout << "one two three" " four five six." << endl;
	cout << "one two three four five six." << endl;
	cout << "one two thre"
	"e four five six." << endl;
}

看运行结果:

 从运行结果可以看得出来, c++在拼接字符串的时候不会在两个字符串之间添加空格, 第二个字符串的第一个字符会占据第一个字符串的结束标记也就是\0, 也就是第二个字符串会紧跟着第一个字符串并从第一个字符串的\0字符开始拼接

看一下下面这段代码的运行:

#include "iostream"
#include "cstring"
using namespace std;

int main() {
	const int Size = 2;
	char name1[] = "JackTom";
	cout << "sizeof name1 = " << sizeof(name1) << endl;
	cout << "strlen of name1 = " << strlen(name1) << endl;
	cout << "name1 = " << name1 << endl;
	
	char name2[Size];
	cout << "Please input your name : " << endl;
	cin >> name2;
	cout << "your input name is : " << name2 << endl;
	cout << "sizeof name2 = " << sizeof(name2) << endl;
	cout << "strlen of name2 = " << strlen(name2) << endl;
	cout << "========" << name2[2] << endl;
	
	
	char name3[] = "Tom";
	cout << sizeof(name3) << "  len : " << strlen(name3) << endl;
	cout << " name3[4] = " << name3[4] << endl;
	cout << " name3[4] = " << int(name3[4]) << endl;
}

运行结果如下:

 从运行结果看出虽然name2我声明的是长度为2的char型数组, 但是我复制了很长的字符串也没有发生数组越界的问题,  感觉应该是因为char数组 只是类似一个char* 所以如果没有遇到\0就不当做字符串结束

c++里有string类, 提供了对字符串的更方便的使用

在使用string类的时候需要引入string头文件在程序开头写:

#include "string"

声明一个string类型的变量方式如下:

string s1 = "one"; // 声明并初始化

string s2, s3; // 仅声明, 没有初始化

string类型的变量可以直接赋给另一个string变量例如:

s2 = s1;  // 这时候s2  也是"one" 了

此外string类型的变量可以有类似java里的操作:

s3 = s1 + s2;  // 可以把s1和s2拼接起来赋给s3

s1 += s2;  // 可以吧s1和s2拼接起来再赋给s1

在我们计算字符串的长度的时候, 需要分清楚是c语言类型的字符串还是c++里的string类对象的字符串例如:

char str_c[] = "hello world";

string str_cpp = "hello c++";

他们使用的方法使不一样的, 分别是:

int len1 = strlen(str_c);

int len2 = str_cpp.size();

猜你喜欢

转载自blog.csdn.net/c1392851600/article/details/84073458