一、C++ 中string类的含义
前置概念
在C中,我们常用strlen,strcpy等函数对字符串进行操作,而C++提供的String也提供该操作。
使用C++的stirng类需要包含相关头文件:#include <string>。
string对象可直接使用关系运算符和赋值赋值运算符、算数运算符“+”,“+=”。
二、string类的基本使用
计算string对象的长度
string的成员函数:size是用来计算字符串对象的长度的,而且String的构造函数默认初始化一个空的字符串。实例如下:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string st;
if( ! st.size())//通过size成员函数判断字符串是否为空,进而验证stirng的”一种“构造函数初始化类对象为空
{
cout<<Is Empty Ok !<<endl;
}
if(st.empty())//直接使用empty成员函数判断更直接!
{
cout<<Is Empty Ok !<<endl;
}
return 0;
}
输出结果为:
Is Empty Ok !
Is Empty Ok !
string类对象的特殊初始化方式
string类有另外一个构造函数(拷贝构造函数),帮我们初始化,代码如下所示:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str1 = hello;
string str2(str1);//把str1拷贝给str2 (本质上的拷贝就是赋值操作,即可理解为str2=str1)
cout<<str1<<endl<<str2<<endl;
return 0;
}
输出结果为:
hello
hello
string类对象与C语言风格字符串的赋值转换
C风格的字符串可直接赋值给string对象,反正则不可以。
#include <iostream>
int main()
{
const char * str3 = "helloworld";
string str4 = str3;//可以将一个C风格字符串赋值给string对象,但反向赋值则不行
return 0;
}
string类中的c_str的成员函数可解决:
string str("www.csdn.net");
const char * p = str.c_str();
cout<< p << endl;
注意c_str返回的是const char *,所以str4的类型不要写错。
string类对象使用算数运算符“+”,“+=”
//使用”+“和“+=”可把两个对象串联在一起,具体操作如下所示
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str1 = a;
string str2 = b;
string str3 = str1 +str2;
cout<<str3<<endl;//输出结果为:ab
str1 += str2;
cout<<str1<<endl;//输出结果为:ab
return 0;
}
string支持使用数组下标的形式访问单个字符
以下实例通过下标的书写方式把字符为'.'改成'_'。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str = www.csdn.net;
cout<<befor:<<str<<endl;
int s_size = str.size();
for(int n=0; n<s_size; n++)
{
if(str[n] == '.')
str[n] = '_';
}
cout<<after:<<str<<endl;
return 0;
}
输出结果为:
befor:www.csdn.net
after:www_csdn_net