#include <iostream> using namespace std; class String { char *str; int len; public: String(char *s=NULL) { if(s) { str=new char[strlen(s)+10]; strcpy(str,s); } else str=NULL; } String(String &s) { if(s.str) { str=new char[strlen(s.str)+10]; strcpy(str,s.str); } else str=NULL; } void set(char *s) { str=s; } void show() { cout<<str<<endl; } int getLen() { return strlen(str); } void delChar(char a) { int i,j; for(i=0;i<strlen(str);i++) if(str[i]==a) { for(j=i;j<strlen(str);j++) str[j]=str[j+1]; i=i-1; } cout<<str; } ~String() { if(str) delete []str; } }; int main() { String s1,s2,s3(s1); s1.set("abccc"); s2.set("abbb"); s1.delChar('c'); s1.show(); s2.delChar('b'); s2.show(); return 0; }这个程序为什么没有结果
时间: 2023-12-02 22:02:51 浏览: 31
在这个程序中,调用 `delChar` 方法删除指定字符后,虽然在方法内部使用 `cout` 输出了结果,但程序并没有在 `main` 函数中输出任何结果。
你需要在 `main` 函数中调用 `show` 方法来输出删除指定字符后的字符串结果。例如:
```c++
int main() {
String s1,s2,s3(s1);
s1.set("abccc");
s2.set("abbb");
s1.delChar('c');
s1.show(); // 输出 "abb"
s2.delChar('b');
s2.show(); // 输出 "a"
return 0;
}
```
这样就能看到正确的输出结果了。
相关问题
#include <iostream> #include <string> #include <stack> #include <vector> #include <iomanip> using namespace std; 逐行注释以上代码
这是一段C++的程序代码,使用了几个标准库的头文件。以下是逐行的注释:
```
#include <iostream> // 输入输出流库头文件
#include <string> // 字符串库头文件
#include <stack> // 栈库头文件
#include <vector> // 向量库头文件
#include <iomanip> // 格式控制库头文件
using namespace std; // 命名空间
```
这段程序代码导入了五个标准库的头文件,分别是iostream、string、stack、vector、iomanip,它们分别用于处理输入输出、字符串、栈、向量和格式控制。其中iostream是C++中最常用的输入输出流库,string是用于字符串操作的库,stack是用于栈数据结构的库,vector是用于动态数组的库,iomanip是用于格式化输出的库。
最后一行代码使用了命名空间std,这意味着所有的标准库函数和变量都在std命名空间中。如果不使用using namespace std,则需要在使用标准库函数时加上std::前缀。
#include<iostream> #include<string> using namespace std; int main(){ string str[5]; }
上述代码定义了一个大小为5的字符串数组`str`,每个元素都是一个`std::string`类型的字符串。
需要注意的是,在使用`std::string`类型的字符串时,我们无需担心字符串的长度问题,因为`std::string`会自动管理字符串的内存空间,可以动态地调整字符串的大小。因此,我们可以将任意长度的字符串赋值给数组中的元素,而不用担心数组元素的大小是否足够。
下面是一个示例,演示了如何使用`std::string`类型的字符串数组:
```c++
#include <iostream>
#include <string>
int main() {
// 定义一个字符串数组
std::string str[5];
// 从标准输入读取5个字符串,并存储到字符串数组中
for (int i = 0; i < 5; i++) {
std::cout << "请输入第" << i+1 << "个字符串:";
std::cin >> str[i];
}
// 遍历并输出字符串数组的每一个元素
for (int i = 0; i < 5; i++) {
std::cout << "第" << i+1 << "个字符串是:" << str[i] << std::endl;
}
return 0;
}
```
在上面的示例中,我们首先定义了一个大小为5的字符串数组`str`,然后使用for循环从标准输入读取5个字符串,并存储到字符串数组中。最后,我们再次使用for循环遍历字符串数组的每一个元素,并输出它们的值。
相关推荐
![text/plain](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)