C++教程:字符串a复制到b的实现

需积分: 10 3 下载量 15 浏览量 更新于2024-08-23 收藏 8.81MB PPT 举报
本篇C++教程由谭浩强所著,旨在介绍如何将字符串a的内容复制到字符串b。首先,我们有一个示例程序,展示了如何通过循环逐个字符地将字符串a中的字符赋值给字符串b,直到遇到空字符('\0')。以下是关键知识点的详细解释: 1. **C++语言背景**: - C++起源于20世纪70年代,由Dennis Ritchie和Brian Kernighan基于B语言发展而来,最初设计目的是为了编写UNIX操作系统。C++在C语言基础上扩展了面向对象编程特性,使其更加强大和灵活。 2. **C++的特点**: - 结构化:C++支持结构化编程,简洁且灵活,适合大型系统和小型控制程序,以及科学计算。 - 高级与低级结合:C++具有高级语言的抽象性,如类和对象,同时提供了丰富的运算符和底层操作,包括位运算,使得编写高效代码成为可能。 - 可移植性:C语言编写的程序能够在不同类型的计算机上运行,只需少量修改即可适应新平台。 - 灵活性与挑战:C++语法结构相对宽松,允许高级自由度,但这也意味着对初学者而言学习和调试难度较大,需要理解语法规则才能编写出高效且无误的程序。 3. **字符串操作**: - 在提供的代码片段中,`char a[] = "I am a boy"` 定义了一个字符串数组a,`char b[20]` 定义了一个足够大的数组b用于存放a的内容。通过`for`循环,`*(b+i)=*(a+i)` 这一行实现了字符逐个复制,从索引0开始,直到遇到`'\0'`表示字符串结束。 4. **main函数执行过程**: - `i=0` 时,开始复制第一个字符'I'; - `i=1` 时,复制第二个字符'a'; - `i=2` 时,继续复制后续字符,直到所有非空字符都被复制到b中。 - 最后,由于数组b的长度固定,所以会在复制完所有字符后添加一个空字符`'\0'`,以确保字符串b的正确格式。 通过这个简单的例子,读者可以了解到C++的基本字符串操作和数组遍历技巧,同时也能感受到C++语言的灵活性和可移植性。在实际编程中,对于字符串复制这样的任务,还可以考虑使用`strcpy()`等库函数来简化操作。

优化以下代码:#include <iostream> #include<string.h> using namespace std; class Book { private:     char bookname[30];     char authers[30];     char publishing_house[40];     int pages;     float price; public:     char getbookname();     char getauthers();     char getpublishing_house();     int getpages();     float getprice();          void setbookname(char *a);     void setauthers(char *a);     void setpublishing_house(char *a);     void setpages(int a);     void setprice(float a);     Book(char*a,char*b,cahr*c,int d,float e)     {         strcpy(bookname,a);         strcpy(authers,b);         strcpy(publishing_house,c);         pages=d;         price=e;     } }; char getbookname() {     char*a=bookname;     return a; } char getauthers() {     char*a=authers;     return a; } char getpublishing_house() {     char*a=publishing_house;     return a; } int getpages() {     int a=pages;     return a; } float getprice() {     float a=price;     return a; } void setbookname(char *a) {     strcpy(bookname,a); } void setauthers(char *a) {     strcpy(authers,a); } void setpublishing_house(char *a) {     strcpy(publishing_house,a); } void setpages(int a) {     pages=a; } void setprice(float a) {     price=a; } int main() {      Book a(char a="《C++程序设计》",char b="谭浩强编制",char c="清华大学出版社",d=484,e=36.00);      Book b(char a="《吹牛大王历险记》",char b="拉斯伯等编著",char c="天津人民出版社",d=149,e=12.80);     cout<<a.getbookname()<<"  "<<a.getauthers()<<"  "<<a.getpublishing_house()<<"  "<<"页数:"<<a.getpages()<<"价钱:"<<a.getprice()<<endl;     cout<<b.getbookname()<<"  "<<b.getauthers()<<"  "<<b.getpublishing_house()<<"  "<<"页数:"<<b.getpages()<<"价钱:"<<b.getprice()<<endl;     return 0; }

2023-05-22 上传