String operator+ (const char* c, const String& s){ String w; int len = ① ; delete []w.str; w.str = ② ; if(w.str == NULL) s.error("overflow"); ③ ; ④ ; w.size = len; ⑤ ;} 考了什么知识点以及它的答案是什么
时间: 2023-08-24 10:05:20 浏览: 73
这段代码涉及到字符串的操作,其中:
① 需要计算参数 c 的长度,可以使用 strlen 函数。
② 需要为 w.str 分配内存空间,大小为 len+1,因为要在末尾添加 '\0'。
③ 如果内存分配失败,需要抛出异常。
④ 将参数 c 复制到 w.str 中,可以使用 strcpy 函数。
⑤ 返回字符串对象 w。
因此,这段代码考察了字符串的长度计算、内存分配、异常处理、字符串复制等知识点。
相关问题
完成C串与String串的“+”运算,将程序补充完整。 String operator+ (const char* c, const String& s){ String w; int len = ① ; delete []w.str; w.str = ② ; String operator+ (const char* c, const String& s){ String w; int len = ① ; delete []w.str; w.str = ② ; if(w.str == NULL) s.error("overflow"); ③ ; ④ ; w.size = len; ⑤ ;}的答案
以下是完成 C 串与 String 串的“+”运算的代码:
```c++
String operator+ (const char* c, const String& s){
String w;
int len = strlen(c) + s.size; // 计算长度
w.str = new char[len + 1]; // 分配内存空间
if(w.str == NULL) s.error("overflow");
strcpy(w.str, c); // 复制字符串 c
strcat(w.str, s.str); // 连接字符串 s
w.size = len;
return w;
}
```
在这段代码中,我们使用了 C 语言中的字符串函数 `strlen`、`strcpy` 和 `strcat`,分别用于计算字符串长度、复制字符串和连接字符串。同时,我们还需要注意内存分配的大小,因为要在末尾添加 '\0',所以需要多分配一个字节。
需要注意的是,这段代码应该在 String 类的定义之外定义,因为它需要访问 String 类的私有成员。同时,这里的 `s` 参数是一个常量引用,因为我们不需要修改它的值。
String operator+(const String &st1, const String &st2) { int length = st1.len + st2.len; char *temp = new char[length + 1]; strcpy(temp, st1.str); strcat(temp, st2.str); String new_str(temp); delete[] temp; return new_str; }语句分析
这是一个字符串类 String 的加法重载运算符函数,可以实现两个字符串对象的连接。具体分析如下:
1. `String operator+(const String &st1, const String &st2)`:函数名为 `operator+`,表示重载加号运算符,参数为两个 `const` 类型的引用,分别为两个字符串对象 `st1` 和 `st2`。
2. `int length = st1.len + st2.len`:计算两个字符串长度之和,赋值给 `length` 变量。
3. `char *temp = new char[length + 1]`:在堆上分配 `length + 1` 个字符空间,赋值给 `temp` 指针变量,用于存放连接后的字符串。
4. `strcpy(temp, st1.str)`:将 `st1` 的字符串内容复制到 `temp` 中。
5. `strcat(temp, st2.str)`:将 `st2` 的字符串内容追加到 `temp` 中。
6. `String new_str(temp)`:用 `temp` 中的字符串内容初始化一个新的 `String` 对象 `new_str`。
7. `delete[] temp`:释放 `temp` 所占用的内存空间。
8. `return new_str`:返回新的字符串对象 `new_str`。
阅读全文