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

需积分: 9 5 下载量 71 浏览量 更新于2024-08-23 收藏 8.81MB PPT 举报
"将字符串a复制到字符串b。-谭浩强经典C++" 这段代码示例展示了如何在C++中将一个字符串复制到另一个字符串。这里我们关注的是字符串的复制方法,以及C++中字符串的基本操作。代码的核心部分是一个简单的for循环,用于逐个字符地从源字符串`a`复制到目标字符串`b`。 首先,定义了两个字符数组`a`和`b`。`a`被初始化为字符串"I am a boy",而`b`未初始化,留待复制`a`的内容。变量`i`用作计数器,用于遍历字符串`a`的每个字符。 在for循环中,`*(a+i)`表示访问`a`数组中的第`i`个元素,即`a`的第`i`个字符。同样,`*(b+i)`则是访问`b`数组的第`i`个位置。循环条件`*(a+i)!=‘\0’`检查`a`中的当前字符是否是字符串结束符`\0`。如果不是,就将`a`的字符复制到`b`的相应位置,即`*(b+i)=*(a+i)`,或更直观的写法`b[i]=a[i]`。 当循环结束时,意味着已遍历了整个字符串`a`,此时在`b`的末尾添加字符串结束符`\0`,这样`b`就被正确地构造为一个完整的字符串。 这个例子中,`a`的字符逐一被复制到`b`,最终`cout`分别打印出`a`和`b`,显示它们具有相同的值。这个过程是C++中字符串处理的常见操作,特别是在没有使用`std::string`类的情况下。 C++的字符串处理在早期的编程实践中是通过字符数组来实现的,这需要程序员手动管理内存和字符串结束符。虽然这种方式灵活性高,但也带来了潜在的错误,如缓冲区溢出等问题。随着C++标准的发展,`std::string`类被引入,提供了更安全、更方便的方式来处理字符串,包括自动内存管理、字符串操作函数等。 在C++的发展历程中,从C语言的简单和高效,到C++的面向对象特性,再到现代C++的模板元编程和智能指针等高级特性,字符串处理也在不断地演进和优化,以适应各种复杂的应用场景。然而,理解基本的字符数组操作仍然是学习C++的重要基础。

优化以下代码:#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 上传