C++ String类笔记

博主刷剑指offer第2题,介绍了string类,它使用比字符数组简单,需包含头文件且位于std命名空间。还回顾了判断空指针的方法,强调使用指针前要判断是否为空。对于字符替换,因从前往后遍历移动次数多,建议从后往前遍历,并先统计原字符和空格个数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天刷剑指offer第2道题了,来看看String吧。

string类使用起来比字符数组简单,同时提供将字符串作为一种数据类型的表示方法。要使用string类,得在程序中包含头文件,且string类位于名称空间std中,string分为C风格字符串和C++的,在此都先在头文件安排进来。

#include<string>
#include<cstring>
using namespace std;

回顾一个问题,怎么判断是否空指针(一个被赋值为0的指针,它不指向任何的对象或者函数)。

1、使用指针的第一件事就是需要看这个指针是否是空指针(坚决不能使用空指针,否则程序就会蹦。意思就是:为一个指针赋值为空指针是不会报错的:char*p;但是在使用的时候一定要判断是否为空指针(即该指针有没有指向,不为空才能操作)

判断空指针的方法:if(p!=nullptr){};//nullptr是空指针的意思//若明确指针该指针有指向,则不需要做判断,若不知道,则要做判断

2、一个指针不是空指针和野指针就是正常指针。

好了,各位看官,首先得判断给的字符串指针str是否空指针啦,既然非空那length也非0啦

if(str==nummptr&&length<=0)
    return;

如果为字符替换的话,直接用replace函数不是很好,尝试不成功,还是按照指针写吧。如果从前往后遍历,则每次需要额外插入两个字符,字符串移动次数较多,所以用从后往前吧。

首先遍历一遍找到原来字符个数和里面空格的个数。

int num=0;
int spacenum=0;
while(str[i]!='\n'){
    num++;
    if(str[i]==' ')
        spacenum++;
    i++;
}

#include "pch.h"
#include <iostream>
#include<string>
using namespace std;

//method 1
int main()
{
	char *str= "we are happy";
	int length = 50;
	if (str==nullptr&&length <= 0)
		return 0;
	int num = 0;
	int spacenum = 0;
	int i = 0;
	while (str[i] != '\0') {
		num++;
		if (str[i] == ' ')
			spacenum++;
		i++;
	}
	cout <<"space"<<spacenum << "length"<<num << endl;
	int newNum = num + 2 * spacenum;
	if (newNum > length)
		return 0;
	while (num >= 0 && newNum > num) {
		if (str[num] == ' ') {
			str[newNum--] = '0';
			str[newNum--] = '2';
			str[newNum--] = '%';
		}
		else {
			str[newNum--] = str[num];
		}
		num--;
	}

	cout << str;
	return 0;

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值