cpp中string类库的函数有啥
时间: 2023-04-06 17:03:45 浏览: 185
常用的函数有:
1. length():返回字符串的长度。
2. substr():返回从指定位置开始的指定长度的子字符串。
3. find():在字符串中查找指定的子字符串,并返回其位置。
4. replace():将字符串中的指定子字符串替换为另一个字符串。
5. append():将一个字符串追加到另一个字符串的末尾。
6. insert():在指定位置插入一个字符串。
7. erase():删除指定位置的字符或一段字符。
8. compare():比较两个字符串的大小关系。
9. c_str():返回一个指向字符串的字符数组。
10. empty():判断字符串是否为空。
相关问题
在课后题12.2(创建一个Employee类,该类中有字符数组,表示姓名、街道地址、市、省和邮政编码。把表示构造函数、ChangeName()、Display()的函数原型放在类定义中,构造函数初始化每个成员,Display()函数把完整的对象数据打印出来。其中的数据成员是保护的,函数是公共的。)的基础上: 将姓名构成类Name,其名和姓在该类中为保护数据成员,其构造函数为接收一个指向完整姓名字符串的指针,其Display()函数输出姓名。然后将Employee类中的姓名成员(字符数组)换成Name类对象。 将所有原型化的函数加上成员函数定义,作为类的内部实现文件。 构成完整的类库定义,要求类定义与类的成员函数定义分开。 主函数实现用户信息显示。 int main(){ Employee em("Mark Brooks","5 West St.","Revere","CA","12290"); em.Display(); em.ChangeName("Richard Voss"); em.Display(); }
好的,根据您的要求,我将扮演一个由 CSDN 开发的 C 知道,是一个类 ChatGPT 的 AI,我会尽力回答您的问题。
对于您的第一个问题,根据课后题 12.2 的要求,我们需要创建一个 Employee 类,其中包含姓名、街道地址、市、省和邮政编码等信息。我们可以将姓名构成一个类 Name,其名和姓为保护数据成员,构造函数接收一个指向完整姓名字符串的指针,Display() 函数输出姓名。然后将 Employee 类中的姓名成员(字符数组)换成 Name 类对象。
以下是完整的类定义和成员函数定义,分别放在不同的文件中:
Name.h:
```
#ifndef NAME_H
#define NAME_H
#include <string>
class Name {
protected:
std::string firstName;
std::string lastName;
public:
Name(const char* fullName);
void Display() const;
};
#endif
```
Name.cpp:
```
#include "Name.h"
#include <iostream>
Name::Name(const char* fullName) {
// 将完整姓名字符串分割成名和姓
std::string fullNameStr(fullName);
size_t pos = fullNameStr.find(' ');
firstName = fullNameStr.substr(0, pos);
lastName = fullNameStr.substr(pos + 1);
}
void Name::Display() const {
std::cout << firstName << " " << lastName << std::endl;
}
```
Employee.h:
```
#ifndef EMPLOYEE_H
#define EMPLOYEE_H
#include "Name.h"
class Employee {
protected:
Name name;
std::string streetAddress;
std::string city;
std::string state;
std::string zipCode;
public:
Employee(const char* fullName, const char* street, const char* c, const char* s, const char* zip);
void Display() const;
void ChangeName(const char* fullName);
};
#endif
```
Employee.cpp:
```
#include "Employee.h"
#include <iostream>
Employee::Employee(const char* fullName, const char* street, const char* c, const char* s, const char* zip)
: name(fullName), streetAddress(street), city(c), state(s), zipCode(zip) {}
void Employee::Display() const {
std::cout << "Name: ";
name.Display();
std::cout << "Street Address: " << streetAddress << std::endl;
std::cout << "City: " << city << std::endl;
std::cout << "State: " << state << std::endl;
std::cout << "Zip Code: " << zipCode << std::endl;
}
void Employee::ChangeName(const char* fullName) {
name = Name(fullName);
}
```
在主函数中,我们可以创建一个 Employee 对象,然后调用其 Display() 函数和 ChangeName() 函数,最后再次调用 Display() 函数来显示修改后的信息。
```
#include "Employee.h"
int main() {
Employee em("Mark Brooks", "5 West St.", "Revere", "CA", "12290");
em.Display();
em.ChangeName("Richard Voss");
em.Display();
return 0;
}
```
希望这个回答能够帮助到您!
请写出满足以下要求的完整代码,在课后题12.2(创建一个Employee类,该类中有字符数组,表示姓名、街道地址、市、省和邮政编码。把表示构造函数、ChangeName()、Display()的函数原型放在类定义中,构造函数初始化每个成员,Display()函数把完整的对象数据打印出来。其中的数据成员是保护的,函数是公共的。)的基础上: 将姓名构成类Name,其名和姓在该类中为保护数据成员,其构造函数为接收一个指向完整姓名字符串的指针,其Display()函数输出姓名。然后将Employee类中的姓名成员(字符数组)换成Name类对象。 将所有原型化的函数加上成员函数定义,作为类的内部实现文件。 构成完整的类库定义,要求类定义与类的成员函数定义分开。 主函数实现用户信息显示。 int main(){ Employee em("Mark Brooks","5 West St.","Revere","CA","12290"); em.Display(); em.ChangeName("Richard Voss"); em.Display(); }
以下是满足要求的完整代码:
// Employee.h
#ifndef EMPLOYEE_H
#define EMPLOYEE_H
#include <iostream>
#include <cstring>
class Name {
protected:
std::string firstName;
std::string lastName;
public:
Name(const char* fullName);
void Display() const;
};
class Employee {
protected:
Name name;
std::string streetAddress;
std::string city;
std::string state;
std::string zipCode;
public:
Employee(const char* fullName, const char* street, const char* city, const char* state, const char* zip);
void ChangeName(const char* fullName);
void Display() const;
};
#endif
// Employee.cpp
#include "Employee.h"
Name::Name(const char* fullName) {
std::string nameStr(fullName);
size_t spacePos = nameStr.find(' ');
firstName = nameStr.substr(0, spacePos);
lastName = nameStr.substr(spacePos + 1);
}
void Name::Display() const {
std::cout << firstName << " " << lastName << std::endl;
}
Employee::Employee(const char* fullName, const char* street, const char* city, const char* state, const char* zip)
: name(fullName), streetAddress(street), city(city), state(state), zipCode(zip) {}
void Employee::ChangeName(const char* fullName) {
name = Name(fullName);
}
void Employee::Display() const {
std::cout << "Name: ";
name.Display();
std::cout << "Street Address: " << streetAddress << std::endl;
std::cout << "City: " << city << std::endl;
std::cout << "State: " << state << std::endl;
std::cout << "Zip Code: " << zipCode << std::endl;
}
// main.cpp
#include "Employee.h"
int main() {
Employee em("Mark Brooks", "5 West St.", "Revere", "CA", "12290");
em.Display();
em.ChangeName("Richard Voss");
em.Display();
return 0;
}
阅读全文