标准库类型String类表示可变长的字符序列。
头文件:#include<string>
string定义在命名空间 std 中。
string的几种初始化方式
使用 = 来初始化为 拷贝初始化 不用 = 为 直接初始化
int main()
{
string s1;//默认初始化 s1是空串
cout << "s1 is :" << s1 << endl;//输出空串
string s2("aaaaa");//直接初始化 为“aaaaa”的字符串
cout << "s2 is :" << s2 << endl;
string s3 = s2;//拷贝初始化 s3是s2的副本 地址不同
cout << "s2的地址为:" << &s2 << " s3的地址为:" << &s3 << " s3 is :" << s3 << endl;
string s4(10, 'c');//直接初始化 内容是十个‘c’+ 空字符
cout << "s4 is :" << s4 << endl;
string s6 = string(10, 'd');//拷贝初始化
cout << "s6 is :" << s6 << endl;
string s7 = { "abcd" };//拷贝初始化
cout << "s7 is :" << s7 << endl;
string s8 = "dcba";//拷贝初始化
cout << "s8 is :" << s8 << endl;
return 0;
}
string上的操作
1.用cin写入时,读到流中的第一个空格就会结束。
void main()
{
string s1;
cin >> s1;
cout << "s1 is :" << s1 << endl;
}
输入:abc def
输出: abc
如果想读入空格,可以使用getline(),getline()再输入流上遇到换行符停止。
void main()
{
string s1;
getline(cin, s1);
cout << "s1 is :" << s1 << endl;
}
输入:abc def
输出: abc def
2.string的empty()与size()
void main()
{
string s1 = {"adc def"};
if (!s1.empty())//判断 string对象是否为空 返回 bool 类型
{
cout << "s1 size is :" << (int)s1.size() << endl;//size 返回string对象的长度 返回的类型为 string::size_type
}
}
3.string相加
void main()
{
string s1 = { "adc" };
string s2 = { "def" };
string s3 = s1 + s2;
cout << s3 << endl;
cout << s1 + s2 << endl;
cout << s1 + "def" << endl;
//cout << "abc" + "def" << endl;//会报错
}
需要注意的是‘+’左右至少要有一个string的对象 若‘+’左右都为字面值 则会报错
4.范围for对字符串中的字符操作
void main()
{
string s1(10,'a');
for (auto &ch: s1)//ch是 char类型引用
{
ch = toupper(ch);//toupper() 返回大写形式
}
cout << "s1 is :" << s1 << endl;
}
5.string也支持下标访问
void main()
{
string s1 = { "abcdef" };
for (int i = 0;i<s1.size();i++)
{
cout << "this char is:" << s1[i] << endl;
}
}
(懒人发言)。。。。。。。。
“没了,有时间在补充。”