C++string字符串1.2

 

string字符串详细用法:

1、初始化:

  • string str      ------      生成一个空字符串str,之后用cin和cout进行输入和输出,默认以空格结束,若想读入一整行,
  • 则用getline(cin, str)输入,在之前可以用cin.get()读入回车,相当于getchar()

常规赋值方法:

  • string str = "aaaaa"
  • char *cstr = "bbbbb";string str2(cstr);
  • char ch = 'c';  string str(5, ch)      ------      用n个字符ch初始化str
  • str.resize(len, ch)      ------      把字符串当前大小置为len,并用字符ch填充不足的部分
  • char *p = str.c_str()      ------      将string类转化为char型(其中str被转化)

2、描述:

对于上面的字符串,可以用str[x]表示字符串中的第x+1个字符

  • str.length()      ------      返回当前字符串的长度

3、赋值:

  • str = str2      ------      字符串复制
  • str.assign(cstr)      ------      将C类字符串赋值给str
  • str.assign(cstr, 2)      ------      将C类字符串的前n个字符赋值给str
  • str.assign(8, 'c')      ------      用8个字符c赋值给当前字符串 
  • str.assign(str2, 0, 3)      ------      把字符串str2中从0开始的3个字符赋给当前字符串

4、链接:

  • str += str2      ------      把str2连接到str的后面
  • str.append(cstr)      ------      将C类字符串str2连接到str的后面
  • str.append(cstr, 2)      ------      将C类字符串str2的前n个字符连接到str的后面
  • str.push_back('k')      ------      把一个字符连接到str的结尾

5、插入与替换:

  • str.replace(0, 3, "abcd");      ------      删除从0开始的3个字符,然后在0处插入字符串"abcd" 
  • str.replace(0, 3, str2, 2);      ------      删除从0开始的3个字符,然后在0处插入字符串str2的前2个字符 
  • str.replace(0, 3, "opqrstuvw", 2, 4);      ------      删除从0开始的3个字符,然后在0处插入字符串“opqrstuvw”从位置2开
  • 始的4个字符 
  • str.replace(0, 3, 8, 'c');      ------      删除从0开始的3个字符,然后在0处插入8个字符c 

对于插入,将replace改为insert,并将前两个参数改为1个,即插入的位置即可

6、比较:

字符串可以直接用<=、==等进行比较,并返回0或1

而对于C类字符串,用str.compare(cstr)比较,小于0表示前者大

  • str1.swap(str2)      ------      交换两个字符串

7、查找:

  • str.find('i', 0)      ------      从第0个字符开始查找字符'i'并返回其下标,找不到返回-1
  • str.find("name", k);      ------      从第k个字符开始查找字符串"name"并返回其下标,找不到返回-1
  • str.rfind("name", string::npos)      ------      反向查找字符串"name"并返回其下标,找不到返回-1

8、翻转:

  • reverse(str.begin(), str.end())      ------      翻转字符串

9、取子串:

  • str.substr(k, len)      ------      从位置k开始取长度为len的子串,如果len<=0返回空串,如果不传入len则默认到字符串末尾
  • str.substring(a, b)      ------      取位置a到位置b-1的子串,如果a>b,则交换a,b,如果出现负数则默认修改为0

 

#include<stdio.h>
#include<iostream>
#include<string>
using namespace std;
int main(void)
{
	int len, loc;
	string str, temp = "fffffffff";
	getline(cin, str);
	cout<<str<<endl;
	printf("%c\n", str[3]);
    
	len = str.length();
	printf("%d\n", len);
	str.resize(20, 'k');
	cout<<str<<endl;

	loc = str.find('k', 0);
	printf("%d\n", loc);
	loc = str.rfind("kk", string::npos);
	printf("%d\n", loc);

	str.replace(0, 3, temp, 2, 3);
	cout<<str<<endl;
	reverse(str.begin(), str.end());
	cout<<str<<endl;
}

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值