字符串---C++

时间:2025-01-19 22:04:13

字符串:

字符串长度
字符串包含的字符个数(不是指中文)。
空字符串的长度是0
“”是空字符串常量,没有一个字符,长度是0
“ ”是空格字符串常量,包含1个空格,长度是1

“boy” 的字符串长度是 3
“大宝贝” 的字符串长度不是3 ,是6或9
(在某些编码中,一个汉字占用2个直接,有些编码中占3个字节)

“” 的字符串长度是0(空串)
“ ” 的字符串长度是1(含有一个空格)

字符串常量

“字面型”字符串常量,要求用“”扩起来。

字符串结束符

在C语言中 每个字符串都会有一个字符串结束符’\0’(占一个字节);
表示这个字符串的结尾, 可以不用自己输入编译器自动会加上,需要留一个字节的内存存放

C++根据编译器实际储存可能有字符串结束符,也可能没有.

字符串变量的表示

在C语言中,使用char类型的数组,来存储字符串变量
注:C语言中,没有专用的字符串类型。
//需要标注内存大小,由于过于麻烦所以C++有了string类型.

在C++中,使用std::string类型来表示字符串变量。

字符串的定义;

#include<string> //C++字符串的头文件

//定义了字符串变量 Friendl,此时是一个空串`
std::string Friendl;
可以使用using namespace std;省略输入std::

#include<iostream>
#include<string>
#include<>

using namespace std;

void definition(void){
	//定义了字符串变量 girlFriend1,空串
	string girlFriend1;

	//把字符串常量"小犹太"拷贝到girlFriend1
	girlFriend1="小犹太";
	cout<<"girlFriend1="<<girlFriend1<<endl;

	string girlFriend2;
	//使用已有字符串变量girlFriend1拷贝到girlFriend2
	girlFriend2=girlFriend1;
	cout<<"girlFriend1="<<girlFriend2<<endl;

	//定义了一个字符串变量girlFriend3
	//同时把他的值设置为了"朱茵"
	//说明:定义变量的同时,设置一个值,一般称为"初始化"
	string girlFriend3("朱茵");
	cout<<"girlFriend1="<<girlFriend3<<endl;

	//定义了一个字符串变量girlFriend4
	//同时,使用另一个字符串变量girlFriend3来"初始化"
	string girlFriend4(girlFriend3);

	string girlFriend5(10,'A');//等效于:sring string girlFriend5("AAAAAAAAAA");

	system("pause");


}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

以上是5种字符串定义的方法

字符串的使用

	string job;

	//基本用法
	//console output 控制台输出
	cout<<"你是做什么工作的呀?"<<endl;
	cin>>job;//console input 控制台的输入
cout<<"你做"<<job<<"应该是个挺不错的工作"<<endl;

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

有弊端,即不会读取空白字符例如:空格,空格后面的字符会被省略.

连续输入并存入变量

string univercity;
	string profession;
	
	cout<<"你是哪个学校毕业的?学什么专业?"<<endl;
	//自动跳过空白字符
	cin>>univercity>>profession;

	cout<<univercity<<"的"<<profession<<"专业不错哦"<<endl;

	system("pause");
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

弊端, 两个变量只能跳过一个空格,即需要存入的变量数-1
示例:
在这里插入图片描述
超过变量数的字符串,将不会被存入.

连续输入字符串但数量不确定

//连续输入多个字符串,而且输入的字符串个数不确定
	//知道输入结束是(ctrl+Z并回车)
	//需要使用循环语句
	string food;
	int number=0;

	cout<<"你喜欢吃什么食物?\n";
	//使用cin>>输入时,遇到文件结束符(Ctrl+Z)就返回0;
	while(cin>>food){

		number=number+1; //每输入一个食物数量加1

	cout<<"你最喜欢的第"<<number<<"个美食是:"<<food<<endl;
	cout<<"你还喜欢吃什么食物?\n";
	
	}

	cout<<"你最喜欢的美食有"<<number<<"种"<<endl;

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

food 实际保存的是最后输入的内容,前面输入的内容会被覆盖掉

读取一行字符串与计算字符串长度

string addr;

	cout<<"请问你从哪里来?"<<endl;
	//从标准输入设备(cin),读取一行字符串,保存到字符串变量addr中
	//如果用户直接回车,就没有任何数据输入;
	//读一行,直到遇到回车符,注意不包括回车符;
	getline(cin,addr);

	//查看输入是否为空
	//如果是空串结果为true(真)否则结果是false(假);
	if(addr.empty()){
		cout<<"你好像,没有输入呢"<<endl;
	}else{
	cout<<addr<<"风景好看吧"<<endl;
	
	}
	//计算字符串长度
	//size()
	//length()
	cout<<"字符串长度是"<<addr.size()<<endl;
	cout<<"字符串长度是"<<addr.length()<<endl;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

字串长度推荐使用length()比较可读形象;