string的学习

一、与string有关数组的初始化

#include<string>

#include<iostream>

 

int main()

{

std::string str1;//声明一个空字符串

std::string str2 = "hello,world!";//使用字符串字面量初始化字符串

std::string str3 = str2;//使用另一个std::string对象来初始化字符串

std::string str4 = str2.substr(0, 5);//部分初始化字符串,substr表示字串,其中(起始位置,长度)

const char* charArry = "hello";

std::string str5(charArry);//使用字符数组初始化字符串

std::string str6(5, 'A');//用重复的字符初始化字符串,其中(个数,字符)

 

std::cout << str1 << '\n';

std::cout << str2 << '\n';

std::cout << str3 << '\n';

std::cout << str4 << '\n';

std::cout << str5 << '\n';

std::cout << str6 << '\n';

 

return 0;

}

上面是string使用的一些例子,我们在使用string时是需要包含“string”的头文件的,并且我们初始化字符串时除了可以使用上面的方法我们也可以使用cin>>str的,不过cin在碰到空格的时候会停止,如果我们想要输入一行字符串,我们就需要getline(cin,str)。

上面我们很多语句都使用了std::,如果不想这么麻烦,我们就需要使用“using namespace std;”来使用std的空间。这个需要加在主函数外面,比如:

#include<string>

#include<iostream>

using namespace std;

 

int main()

{

std::string str;

getline(cin, str);

cout << str;

return 0;

}

二、string的一些基本操作

int main()

{

ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);

char buf[100];

scanf_s("%s", buf);

std::string str(buf);

printf("%s", str.c_str());

return 0;

}

 

在C++中,std::string提供了一个成员函数c_str()用于返回一个指向以空字符结尾的C风格字符串(即const char*类型),在进行printf输出是需要将string转化为C风格的字符串进行输出。

 

1.获取字符串长度:

int main()

{

string str = "hello,world!";

int length;

length = str.length();//或者可以写成str.size()

cout << length;

return 0;

}

可以通过.length()或者.size()的方式来获取string类型字符串的长度。

 

2.拼接字符串:

int main()

{

string str1 = "hello";

string str2 = "world";

string result1 = str1 +", "+ str2;

string result2 = str1.append(", ").append(str2);

cout << result1<<'\n';

cout << result2;

return 0;

}

可以通过“+”或者“append”来进行拼接,不过append之后需要使用();

3.字符串的查找:

int main()

{

string str = "hello,world!";

size_t pos = str.find("world");

if (pos != string::npos)

cout << "found" << '\n';

else

cout << "not found" << '\n';

return 0;

}

通过使用.find可以进行字符串内部的查找。

4.字符串的替换:

int main()

{

string str = "hello, world!";

str.replace(7, 5, "universe");

cout << str;

return 0;

}

使用.replace可以将字符串内进行替换,其中(起始位置,长度,替换的内容)。

5.提取子字符串:

int main()

{

string str = "hello, world!";

string substr = str.substr(7, 5);

cout << substr;

return 0;

}

使用.substr可以进行子字符串的提取,其中(起始位置,长度)。注意长度不要越界。

6.字符串的比较:

int main()

{

string str1 = "aabcc";

string str2 = "abbcc";

int ret = str1.compare(str2);

if (ret == 0)

{

cout << "str1=srr2";

}

else if (ret < 0)

{

cout << "str1<str2";

}

else

cout << "str1>str2";

return 0;

}

通过使用.compare()可以比较两组字符串的大小,相当于前面减后面,小于0就是前面小,大于0就是后面小。

三、遍历string的方法

有两种:

1.循环枚举下标:

int main()

{

string str = "hello, world";

for (int i = 0; i < str.length(); i++)

{

cout << str[i];

}

return 0;

}

2.auto枚举

int main()

{

string str = "hello, world!";

for (auto i : str)

{

cout << i;

i = 'a';//此处的i不会被a修改,因为i是被拷贝出来的,不是引用str的

}

cout << '\n';

for (auto& i : str)

{

cout << i;

i = 'a';//此处的i值会变为a,因为&就是引用了str

}

cout <<'\n'<< str;

return 0;

}

使用auto进行枚举,注意i的变化。

  • 19
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值