C12.【C++ Cont】string类字符串的创建、输入、访问和size函数
目录
1.概念
2.string字符串的创建
示例代码
运行结果
备注
2.string字符串的输入
1.cin(字符串没有空格)
2.getline(可以读含有空格的字符串)
示例代码1:getline传两个参数
示例代码2:getline传三个参数
3.size函数
示例代码
运行结果
4.访问string类字符串
示例代码
运行结果
5.附cplusplus官网的对string的介绍
1.概念
C语言用字符数组存储字符串,但C++中将字符串直接作为一种类型,也就是string类型
类比类型int:例如int a=0;可以推出string str = "Hello World!"
***使用string前一定要包含<string>头文件(不是<cstring>头文件!!!)***
2.string字符串的创建
string s1; 创建空字符串
string s2 = "hello world"; 创建非空字符串
示例代码
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str1="abc";
string str2;
cout<<str1<<endl<<str2;
return 0;
}
注意 str1中的字符串不再以\0作为结束标志(这点和C语言不一样)
运行结果
str1内容为"abc",因此打印结果不为空,str2没有内容可打印,因此打印结果为空
备注
1.string str1="abc";等价为用圆括号初始化:string str1("hello world");
2.string类字符串可以相互赋值:string str1="abc"; string str2 = str1;(但在数组中不可以这样写!)
char str1[] = "abc";
char str2[5];
//错误写法----------------------------------------
str1 = str2;//不能这样写! 地址常量不能直接赋值!
//错误写法----------------------------------------
2.string字符串的输入
1.cin(字符串没有空格)
#include <string>
using namespace std;
int main()
{
string str1;
cin>>str1;
return 0;
}
2.getline(可以读含有空格的字符串)
cplusplus网的介绍 点我跳转
从名字上理解,getline获取一行,在C++98标准中,getline有两种不同的形式,
istream& getline (istream& is, string& str);
istream& getline (istream& is, string& str, char delim);
解释:
1.istream全称input stream,为输入流,cin是istream类型的标准输入流对象
2.ostream全称output stream,为输入流,cout是ostream类型的标准输\出流对象
3.getline 函数作用:从输入流中读取一行文本信息,所有如果是在标准输入流(即键盘)中读取数
据,第一个参数可以写cin
示例代码1:getline传两个参数
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str1;
getline(cin,str1);
cout<<str1;
return 0;
}
运行结果
此写法: istream& getline (istream& is, string& str);getline停止读取的结束标志字符(又称定界字符)(the delimitation character)默认为'\n',因此getline(cin,str1);的等价写法为getline(cin,str1,'\n');
因此istream& getline (istream& is, string& str, char delim);的第三个参数为结束标志字符,可以自己定义
示例代码2:getline传三个参数
string str1;
getline(cin,str1,'0');
cout<<str1;
则getline会读取字符0前的字符串
运行结果
3.size函数
size() 函数用于获取字符串长度,调用该函数时要用 " . "点运算符
示例代码
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str0;
string str1="abc";
string str2="def ghi ";
cout<<str0.size()<<endl;
cout<<str1.size()<<endl;
cout<<str2.size();
return 0;
}
运行结果
用电操作符的原因:string 是 C++提供的一种更加复杂的封装类型,在string类型的变量中加入了操作这个字符串的各种方法(函数), 比如求字符串长度、字符串末尾插入一个字符等操作。所以要
对string类型的变量进行各种操作,就可以使用 . 操作符来使用这些函数
例如在Dev C++中输入str1.会显示大量的函数
4.访问string类字符串
可以像访问数组元素那样,通过下标逐个访问
示例代码
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str = "abcdef";
int i = 0;
for(i = 0; i < str.size(); i++)
{
cout << str[i] << " ";
}
return 0;
}
运行结果
5.附cplusplus官网的对string的介绍
https://legacy.cplusplus.com/reference/string/string/