C++ primer plus 第六版 课后答案 8.4

原创答案,仅供参考

编译环境windows 8.1,编译器 vs2013

经过测试一切正常:


题目:

 下面是一个程序框架:

#include <iostream>
using namespace std;
#include <cstring>
struct stringy
{
 char *str;
 int ct;
};
int main()
{
 stringy beany;
 char testing[]="Reality isn't what it used tobe.";
 set(beany,testing);
 show(beany);
 show(beany,2);
 testing[0]='D';
 testing[1]='u';
 show(testing);
 show(testing,3);
 show("Done! ");
 return 0;
}
请提供其中描述的函数和原型,从而完成该程序。注意,应用两个show()函数,每个都使用默认参数。
请尽可能使用const参数。set()使用new分配足够的空间来存储指定的字符串。这里使用的技术与设计和实现类时使用

的相似(可能还必须修改头文件的名称,删除using编译指令,这取决于所用的编译器)


#include "stdafx.h"
#include <iostream>
#include <cstring>//strlen(),strcpy()

using namespace std;

struct stringy{
	char *str;				//指向字符串
	int ct;					//字符串的长度
};

void set(stringy &beany,const char arr[])
{
	int ct = strlen(arr);			//测量字符串长度
	beany.ct = ct;					//储存长度
	beany.str = new char [ct+1];	//根据长度开辟空间
	strcpy_s(beany.str, 40, arr);	//复制数组到新空间
}	

void show(stringy &beany,int repeat=1)
{
	while (repeat--)	cout << beany.str << endl;
}

void show(char arr[], int repeat = 1)
{
	while (repeat--)	cout << arr << endl;
}

int main()
{
	stringy beany;
	char testing[] = "Reality isn't what it used to be.";
	
	set(beany, testing);//第一个参数是一个参考
						//分配空间来保存测试副本
						//设置beany的str成员指向新块
						//复制testing去新块
						//并且设置beany的ct成员
	show(beany);		//打印member字符串一次
	show(beany, 2);		//打印member字符串三次
	testing[0] = 'D';
	testing[1] = 'u';
	show(testing);			//打印testing字符串一次
	show(testing, 3);		//打印testing字符串三次
	show("Done!");
	while (1);
	return 0;
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值