string是C++风格的字符串
,而string本质上是一个类,在使用string语句的时候一般需要导入string的头文件。不过我一般使用下方的万能头文件。
#include
通过assign进行赋值操作。
//直接进行赋值
string str1;
str1 = "hello world";
cout << "str1 = " << str1 << endl;
//通过assigin进行赋值
string str4;
str4.assign("hello c++");
cout << "str4 = " << str4 << endl;
//通过assign方法赋值字符串的前五个字符
string str5;
str5.assign("hello c++",5);
cout << "str5 = " << str5 << endl;
//通过assign方法赋值五个x
string str7;
str7.assign(5, 'x');
cout << "str7 = " << str7 << endl;
通过append方法进行字符串拼接
。
//直接拼接
string str1 = "我";
str1 += "爱玩游戏";
cout << "str1 = " << str1 << endl;
string str2 = "LOL DNF";
string str3 = "I";
//通过append方法进行拼接
str3.append(" love ");
//通过apeend方法拼接前四个字符
str3.append("game abcde", 4);
// 从下标4位置开始,截取3个字符,拼接到字符串末尾
str3.append(str2, 4, 3);
cout << "str3 = " << str3 << endl;
find和rfind方法进行查找操作
//find方法是进行从左往右查找
string str1 = "abcdefgde";
int pos = str1.find("de");
if (pos == -1)
{
cout << "未找到" << endl;
}
else
{
cout << "pos = " << pos << endl;
}
//rfind方法进行从左往右查看
int pos1 = str1.rfind("de");
if (pos1 == -1)
{
cout << "未找到" << endl;
}
else
{
cout << "pos1 = " << pos1 << endl;
}
通过replace进行替换
//从下标1开始,数3个字符进替换
string str1 = "abcdefgde";
str1.replace(1, 3, "1111");
cout << "str1 = " << str1 << endl;
通过用compare方法来比较字符串直接的大小,不过一般用来判断字符串之间是否相同
。
string s1 = "hello";
string s2 = "hello";
int ret = s1.compare(s2);
if (ret == 0) {
cout << "s1 等于 s2" << endl;
}
else if (ret > 0)
{
cout << "s1 大于 s2" << endl;
}
else
{
cout << "s1 小于 s2" << endl;
}
通过[]方法或at方法来进行存取字符,size方法来获取字符串长度
。
//通过[]来获取字符
string str = "hello world";
for (int i = 0; i < str.size(); i++)
{
cout << str[i] << " ";
}
cout << endl;
//通过at方法来获取字符
for (int i = 0; i < str.size(); i++)
{
cout << str.at(i) << " ";
}
cout << endl;
//字符修改
str[0] = 'x';
str.at(1) = 'x';
cout << str << endl;
通过insert方法来插入字符,erase方法来删除字符
。
string str = "hello";
从下标1前插入字符
str.insert(1, "111");
cout << str << endl;
//从下标1开始3个字符进行删除
str.erase(1, 3);
cout << str << endl;
//从下标1处开始3个字符进行截取
string str = "abcdefg";
string subStr = str.substr(1, 3);
cout << "subStr = " << subStr << endl;
//首先查找’@‘字符的下标,然后从下标0处开始pos个字符进行截取
string email = "[email protected]";
int pos = email.find("@");
string username = email.substr(0, pos);
cout << "username: " << username << endl;
通过迭代器const_iterator来获取第一个字符和最后一个字符;必须要以指针的形式输出,因为迭代器类似于指针类型,迭代器提供了对 对象的间接访问。
//获取字符串的第一个字符
string str1="abcdef";
string::const_iterator it = str1.begin();
cout<<*it<<endl;
//end是指向最后一个字符后面的元素,而且不能输出,所以cout << *it << endl;这样输出会报错,所以需要进行it--来获取最后一个字符,和vector容器的使用类似
it = str1.end();
it--;
cout << *it << endl;
通过reverse方法来进行字符串的倒置
。
string str1="abcdef";
reverse(str1.begin(), str1.end());
cout <<str1<< endl;
//将字符串转字符数组
string c = "abcdf";
char *d = new char[20];
strcpy(d, c.c_str());
cout << "c:" << c << endl;
cout << "d:" << d[0] << endl;
我的c++的学习视频:黑马程序员匠心之作|C++教程从0到1入门编程,学习编程不再难
参考博客:《黑马》——C++提高编程