C++ 为什么我有一个'=';对输出和两个笑脸进行签名,而不是正确的输出?C++;
这是一个更新,以显示以下更改和详细信息。 下面是一个指向输出快照的链接C++ 为什么我有一个'=';对输出和两个笑脸进行签名,而不是正确的输出?C++;,c++,class,C++,Class,这是一个更新,以显示以下更改和详细信息。 下面是一个指向输出快照的链接 #包括 #包括 #包括 #包括 使用名称空间std; //创建HotelRoom类 头等舱酒店 { 私人: char*ptr_客人; char room_编号[3]; 室内容量; 国际占领联盟地位; 每日双倍的费用; 公众: HotelRoom(char roomNumber[],国际客房容量,双人房价,char*ptr_名称,国际职业状态); ~HotelRoom(); 无效显示_编号(); void Display_G
#包括
#包括
#包括
#包括
使用名称空间std;
//创建HotelRoom类
头等舱酒店
{
私人:
char*ptr_客人;
char room_编号[3];
室内容量;
国际占领联盟地位;
每日双倍的费用;
公众:
HotelRoom(char roomNumber[],国际客房容量,双人房价,char*ptr_名称,国际职业状态);
~HotelRoom();
无效显示_编号();
void Display_Guest();
int Get_Capacity();
int Get_Status();
双重获得率();
int变更_状态(int);
双变化率(双);
};
HotelRoom::HotelRoom(char roomNumber[],内部roomCapacity,双倍房费,char*ptr_name,内部职业状态)
{
strcpy(房间号、房间号);
房间容量=房间容量;
每日房价=客房房价;
ptr_guest=新字符[strlen(ptr_名称)+1];
strcpy(ptr_客人、ptr_姓名);
占用情况=占用状态;
}
HotelRoom::~HotelRoom()
{
coutchar HotelRoom::Display_Guest()
{
coutchar HotelRoom::Display_Guest()
{
我能猜到吗,在所有的C风格指针的杂耍下,你要么忘记终止字符串,要么在打印之前删除它。我会使用std::string
。但是对于我来说,这太多的代码了,以至于我无法在周日通读。你有什么好的理由使用char roomNumber[]std::string?我正在使用char roomNumber[]因为我的书,C++,商业程序员,说使用char和char指针;我的作业也指定使用Cala.另外,在我的班级的DelPauleCudioDePrasyLoad中,如果我说“返回ptruBube”,或者返回ROMMUX号,它会说你不能“返回”的错误。指针。这就是为什么我在调用cout时使用cout打印到屏幕上的原因。如果您从函数中删除了return
语句,您还需要将返回类型更改为void
。我猜,在所有的C风格指针操作中,您要么忘记终止字符串,要么在打印之前删除它。我会使用de>std::string
取而代之。但这对我来说太多了,我在周日读不懂。你有什么好的理由在std::string
上使用char roomNumber[]
吗?我正在使用char roomNumber[]因为我的书,C++,商业程序员,说使用char和char指针;我的作业也指定使用Cala.另外,在我的班级的DelPauleCudioDePrasyLoad中,如果我说“返回ptruBube”,或者返回ROMMUX号,它会说你不能“返回”的错误。一个指针。这就是我在调用它时使用cout打印到屏幕的原因。如果您从函数中删除了return
语句,您还需要将返回类型更改为void
。
#include <iostream>
#include <iomanip>
#include <string>
#include <cstring>
using namespace std;
//create HotelRoom class
class HotelRoom
{
private:
char* ptr_guest;
char room_number[3];
int room_capacity;
int occupancy_status;
double daily_rate;
public:
HotelRoom(char roomNumber[], int roomCapacity, double roomRate, char* ptr_name, int occupancyStatus);
~HotelRoom();
void Display_Number();
void Display_Guest();
int Get_Capacity();
int Get_Status();
double Get_Rate();
int Change_Status(int);
double Change_Rate(double);
};
HotelRoom::HotelRoom(char roomNumber[], int roomCapacity, double roomRate, char* ptr_name, int occupancyStatus)
{
strcpy(room_number, roomNumber);
room_capacity = roomCapacity;
daily_rate = roomRate;
ptr_guest = new char[strlen(ptr_name) + 1];
strcpy(ptr_guest, ptr_name);
occupancy_status = occupancyStatus;
}
HotelRoom::~HotelRoom()
{
cout << endl;
cout << "Destructor Executed";
cout << endl;
delete [] ptr_guest;
}
void HotelRoom::Display_Guest()
{
char* temp = ptr_guest;
while(*temp != '\0')
cout << *temp++;
}
void HotelRoom::Display_Number()
{
cout << room_number;
}
int HotelRoom::Get_Capacity()
{
return room_capacity;
}
int HotelRoom::Get_Status()
{
return occupancy_status;
}
double HotelRoom::Get_Rate()
{
return daily_rate;
}
int HotelRoom::Change_Status(int roomStatus)
{
if(roomStatus <= room_capacity )
{
occupancy_status = roomStatus;
return occupancy_status;
}
else
occupancy_status = -1;
}
double HotelRoom::Change_Rate(double newRate)
{
daily_rate = newRate;
return daily_rate;
}
int main()
{
cout << setprecision(2)
<< setiosflags(ios::fixed)
<< setiosflags(ios::showpoint);
//Declare variables to hold data
char roomNumber[3] = {'1','3','\0'};
char guestName[20];
double roomRate = 89.00;
int roomCapacity = 4;
int occupancyStatus = 0;
int status;
int checkOut;
int newCustomer;
//Ask for user input
cout << "What is the guest's name: ";
cin.getline(guestName, 20);
cout << endl;
cout << "How many guests will be staying in the room: ";
cin >> status;
HotelRoom HotelRoom1(roomNumber, roomCapacity, roomRate, guestName, status);
//Display Rooom information
cout << endl;
cout << endl;
if(HotelRoom1.Change_Status(status))
{
cout << endl;
cout << "Guest's Name: ";
HotelRoom1.Display_Guest();
cout << endl;
cout << endl;
cout << "The capacity of this room is " << HotelRoom1.Get_Capacity() << endl;
cout << endl;
cout << "There are " << HotelRoom1.Get_Status() << " guests staying in the room";
}
cout << endl;
cout << endl;
cout << "Your room number is " << HotelRoom1.Display_Number();
cout << endl;
cout << endl;
cout << "The rate for this room is " << HotelRoom1.Get_Rate();
cout << endl;
cout << endl;
//chech this guest out?
cout << "Check this guest out? ('1 = yes' '0' = no) ";
cin >> checkOut;
switch(checkOut)
{
case 1:
HotelRoom1.Change_Status(0);
for(int i = 0; i < 3; ++i )
{
cout << endl;
}
cout << "You have checked out of room number " << HotelRoom1.Display_Number();
cout << endl;
cout << endl;
cout << "The capacity of this room is " << HotelRoom1.Get_Capacity();
cout << endl;
cout << endl;
cout << "There are currently " << HotelRoom1.Get_Status() << " occupants";
cout << endl;
cout << endl;
cout << "The rate of this room was " << HotelRoom1.Get_Rate();
break;
}
//check in new guest?
cout << endl;
cout << endl;
cout << "Check in new guest? ('1 = yes' '0' = no) ";
cin >> newCustomer;
for(int i = 0; i < 3; ++i )
{
cout << endl;
}
switch (newCustomer)
{
case 1:
HotelRoom HotelRoom2(roomNumber, roomCapacity, roomRate, guestName, status);
HotelRoom1.Change_Rate(175.00); //Change rate of room
cout << endl;
cout << "What is the guest's name: ";
cin.getline(guestName, 20);
cout << endl;
cout << "How many guests will be staying in the room: ";
cin >> status;
cout << endl;
cout << endl;
//Display new guest information
if(HotelRoom1.Change_Status(status))
{
cout << endl;
cout << endl;
cout << "The capacity of this room is " << HotelRoom1.Get_Capacity() << endl;
cout << endl;
cout << "There are " << HotelRoom1.Get_Status() << " guests staying in the room";
}
cout << endl;
cout << endl;
cout << "Your room number is " << HotelRoom1.Display_Number();
cout << endl;
cout << endl;
cout << "The rate for this room is " << HotelRoom1.Get_Rate();
cout << endl;
cout << endl;
break;
}
cout << endl;
system("PAUSE");
return 0;
}
char HotelRoom::Display_Guest()
{
cout << ptr_guest;
}
string HotelRoom::Display_Number()
{
cout << room_number;
}
int HotelRoom::Change_Status(int roomStatus)
{
if(roomStatus <= room_capacity )
{
occupancy_status = roomStatus;
return occupancy_status;
}
else
occupancy_status = -1;
}