C++中的字符串与结束标志解析

需积分: 9 3 下载量 123 浏览量 更新于2024-08-23 收藏 8.66MB PPT 举报
"字符串和字符串结束标志-C++程序设计课件谭浩强" 在C++编程中,字符串是一个非常重要的概念,它被当作字符数组来处理。字符串常量,如"CHINA",在计算机内存中实际表现为一个无名的一维字符数组。这个字符串常量不仅包含可见的字符,还有一个特殊的字符——字符串结束标志'\\0',它的存在用于标识字符串的终结位置。 在C++语言中,'\\0'是一个空字符,占用一个字节的内存空间,但它并不计算在字符串的长度之内。字符串长度通常由从第一个非零字符开始,到'\\0'为止的字符个数来确定。这种约定使得程序在处理字符串时,可以通过检测到'\\0'来判断字符串是否结束,而无需依赖于预先定义的长度。 例如,字符串"CHINA"在内存中的布局可能是这样的: ``` C H I N A ‘\0’ ``` 其中,每个字母占据一个字节,'\\0'也占据一个字节,但我们说字符串"CHINA"的长度是5,因为'\\0'不计入长度。 C++中的字符串处理涉及到许多函数和操作,如`std::string`类提供了丰富的成员函数,用于字符串的创建、复制、拼接、查找、替换等操作。这些操作在处理字符串时极大地提高了程序员的效率和代码的可读性。 此外,C++也支持原始的字符数组形式的字符串,这通常被称为C风格的字符串。在这种情况下,字符串操作需要注意边界和结束标志的处理,避免出现缓冲区溢出等问题。比如,使用`strcpy`、`strcat`等函数时,必须确保目标数组有足够的空间容纳源字符串加上'\\0'。 字符串的处理是程序设计中的核心部分,尤其是在处理用户输入、文件读写、网络通信等场景中。理解字符串结束标志'\\0'的含义和作用,对于编写安全、高效的C++代码至关重要。 C++的发展历程与C语言密切相关,C++是在C语言的基础上增加了面向对象特性、模板、异常处理等功能,使其成为一个更强大的编程语言。C++的设计目标是兼顾程序的效率和可维护性,同时提供良好的可移植性。因此,学习C++不仅仅是学习语法,还需要理解其设计哲学和最佳实践,以便在实际项目中发挥其优势。

#include<iostream> using namespace std; class Book { private: string bookname; string authtors; string publishing_house; int pages; double price; public: Book() { bookname = ""; authtors = ""; publishing_house = ""; pages = 0; price = 0; } Book(string bk, string auth, string pub, int pag,double pri) { bookname = bk; authtors = auth; publishing_house = pub; pages = pag; price = pri; } ~Book(){} string getBookname() const { return bookname; } void setBookname(char*name){ bookname=name; } string getAuthtors() const { return authtors; } void setAuthtors(char* auth) { authtors = auth; } string getPublishing_house() const { return publishing_house; } void setPublishing_house(char* pub) { publishing_house = pub; } int getPages() const { return pages; } void setPages(int pag) { pages = pag; } double getPrice() const { return price; } void setPrice(double pri) { price = pri; } }; int main() { Book book1("《C++程序设计》", "谭浩强编著", 485, "清华大学出版社", 36.00); Book book2("《吹牛大王历险记》", "拉斯伯等编著", 149, "天津人民出版社", 12.80); cout << "书名:" << book1.getBookname() << endl; cout << "作者:" << book1.getAuthtors() << endl; cout << "页数:" << book1.getPages() <<"页"<< endl; cout << "出版社:" << book1.getPublishing_house() << endl; cout << "价格:" << book1.getPrice() <<"元"<< endl; cout << endl; cout << "书名:" << book2.getBookname() << endl; cout << "作者:" << book2.getAuthtors() << endl; cout << "页数:" << book2.getPages() << "页" << endl; cout << "出版社:" << book2.getPublishing_house() << endl; cout << "价格:" << book2.getPrice() << "元" << endl; return 0; }这个代码如何修改

2023-05-19 上传