计算机程序设计c++ 4.9:字符串子串

取字符串

用户输入一个字符串,然后输入起始位置k和长度l
显示从第k个字符开始,长度为l的子字符串。
要求字符串输入一次,子串操作可以多次,输入位置和长度均
为0时停止。

运行结果
◦ 请输入字符串(可以有空格格)
◦ the c++ programming
◦ 请输入子串起始位置和长度
◦ 1 5
◦ the c

问题分析
取字符就是从一个字符串中取出连续的部分字符串。
若字符串用字符数组表示
可以将从k到k+l-1的字符逐个复制到令一个字符数组中
形成一个新的字符串
特别注意在末尾加'\0'

算法描述

①设源字符串用str[101]表示(100为最大长度);
②输入起始位置k(从1开始),l(字符串长度);
③求源字符串的长度len;
④j=0;
⑤对i=k-1,…,k+l-2且i<len
sub[j]=str[i]
j=j+1;
⑥sub[j]= ‘\0’;
⑦输出sub,结束

代码实现

#include <iostream>
using namespace std;
int main(){
char str[101]; //源字符串
char sub[101]; //子字符串
int len; 
int k,l; //子字符串起始位置,子字符串长度
int i,j=0; //循环变量
//输入源字符串
cout<<"请输入字符串(可以有空格格)"<<endl;
cin.getline (str,100);
len = 0;
while(str[len]!='\0')
{
	len++;
}
cout<<"请输入子串起始位置和长度"<<endl;
cin>>k>>l;
while(k!=0 && l!=0)
{
	j = 0;
	for(i=k-1; i=k+l-1 && i<len; ++i)
	{
	  sub[j] = str[i];
	  j++;
	}
	sub[j] = '\0';
	cout<<sub<<endl; //输出子串
	cout<<"请输入子串起始位置和长度"<<endl;
	cin>>k>>l; //再次输入子字符串起始位置,子字符串长度
}
return 0;
}

注意

①本例包含求字符串的长度的操作,能否利用系统函数?
②取子串的for循环结束时,子串字符确实已经放在sub中,但这时只能叫字符数组,还不能叫字符串。因为字符串是以’\0’为结束标志的,sub[j]=’\0’;就是在末尾放置结束标志,才成为字符串,才可以整体输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

uncle_ll

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值