1)写一个程序读取用户两个数字,加在一起,然后输出答案。程序应该使用两个功能:一个功能命名readnumber()应使用从用户得到一个整数,和函数名为“writeanswer”应该是用来输出答案。你不需要写一个函数来进行添加。
2)修改你写在# 1,从用户的功能和输出答案读一个数的函数在一个单独的文件中称“IO CPP程序。”。使用向前声明从你的main()函数访问它们,这应该生活在“主要CPP。”。
3)修改你写在# 2使其使用头文件而不是向前声明的函数访问程序。确保你的头文件使用头文件保护。
标准库包含了很多有用的类-但也许最有用的就是std::string。std::string(和std::wstring)是一个字符串类,分配,比较提供了许多操作,和修改的字符串。在这一章中,我们将深入到这些字符串类。
注:C风格字符串将被称为“C风格字符串”,而std::字符串(和std::wstring)将被简单地称为“弦”。
一个字符串类动机
在前一课中,我们覆盖的C风格字符串,使用字符数组来存储一个字符的字符串。如果你试图用C风格字符串做任何事情,你会很快得出结论,他们是一个痛苦,容易陷入困境,难以调试。
C风格字符串有许多不足之处,主要是围绕这一事实,你必须自己做所有的内存管理。例如,如果你想指定的字符串“hello!“到缓冲区中,你必须首先动态地分配一个缓冲区的正确长度:
1
|
char
*strHello =
new
char
[7];
|
不要忘记使用删除而不是正常的阵列删除!
此外,许多C提供的工作数量直观的运营商,如分配和比较,只是不使用C风格字符串。有时会出现工作但是却产生不正确的结果-例如,比较两个C风格字符串使用= =实际上会做一个指针比较,而不是比较字符串。另一个使用运算符=分配一个C风格字符串将出现在第一,但实际上是在做一个指针的拷贝(浅拷贝),这通常不是你想要的。这些事情可能会导致程序崩溃,是很难找到和调试!
底线是,与C风格字符串工作需要记住很多挑剔的规则什么是安全/不安全的,记住一大堆有趣的名字一样,而不是使用直观的运营商strcat()和strcmp()功能,并做了大量的手动内存管理。
幸运的是,C++标准库处理字符串提供一种更好的方法:std::字符串和std::wstring类。利用C++的概念如构造函数,析构函数,和std::string操作符重载,允许你创建和操作在一个直观的和安全的方式串!没有更多的内存管理,没有更多的奇怪的函数名称,并大大减少潜在的灾难。