C++ 类中的动态字符数组未打印正确的结果
我正在做一个项目,其中用户将添加汽车信息,一个功能将显示所有可用的汽车。但我无法将汽车名称从一个数组复制到另一个数组。这里是代码C++ 类中的动态字符数组未打印正确的结果,c++,class,oop,dynamic,char,C++,Class,Oop,Dynamic,Char,我正在做一个项目,其中用户将添加汽车信息,一个功能将显示所有可用的汽车。但我无法将汽车名称从一个数组复制到另一个数组。这里是代码 #include <fstream> #include <iostream> #include <stdio.h> #include <conio.h> #include <string.h> using namespace std; const int SIZE=10; class car { p
#include <fstream>
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <string.h>
using namespace std;
const int SIZE=10;
class car
{
public:
int car_no=0;
char car_name[SIZE][20];
char car_model[SIZE][20];
char car_colour[SIZE][20];
char reg_id[SIZE][20];
int rate_per_day[SIZE];
char cars_in_lot[SIZE][20];
};
addcar()
{
char choice;
do{
car*newcar=new car;
cout<<"\t\t\t\t(->) Name : ";
cin>>newcar->car_name[newcar->car_no];
strcpy(newcar->cars_in_lot[newcar->car_no],newcar->car_name[newcar->car_no]);
cout<<endl;
cout<<"\t\t\t\t(->) reg!str@t!0n number : ";
cin>>newcar->reg_id[newcar->car_no];
cout<<endl;
cout<<"\t\t\t\t(->) c0l0ur : ";
cin>>newcar->car_colour[newcar->car_no];
cout<<endl;
cout<<"\t\t\t\t(->) Model : ";
cin>>newcar->car_model[newcar->car_no];
cout<<endl;
cout<<"\t\t\t\t(->) Rate of Rent Per Day : ";
cin>>newcar->rate_per_day[newcar->car_no];
newcar->car_no++;
cout<<"Want to add another car [y/n]"<<endl;
cin>>choice;
}while(choice == 'y' || choice == 'Y');
}
void show_cars_in_lot()
{
cout<<"Avaialable Cars in Lot are : "<<endl;
car*newcar=new car;
for(int i=0;i<SIZE;i++)
cout<<i+1<<"\t"<<newcar->cars_in_lot[i]<<"\t"<<newcar->car_colour[i] <<"\t"<<newcar->car_model[i]<<"\t"<<newcar->reg_id[i]<<endl;
getch();
}
void display1()
{
cout<<"\t\t\t(1) Show Cars in Lot"<<endl;
cout<<"\t\t\t(2) Add Cars"<<endl;
}// end of display1
int main()
{
char option;
int desire_car;
do
{
int choice;
display1();
cout<<"Enter Your Choice : ";
cin>>choice;
switch(choice)
{
case 1:
show_cars_in_lot();break;
case 2:
addcar();break;
default:
cout<<"You Entered Wrong Input"<<endl;
}
cout<<"Go To Main Menu [y/n]";cin>>option;
}while(option == 'y' || option == 'Y');
return 0;
}
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
常数int SIZE=10;
班车
{
公众:
int car_no=0;
char car_name[尺寸][20];
char car_车型[尺寸][20];
炭色[尺寸][20];
字符注册号[大小][20];
每日整数费率[大小];
每批[尺寸][20]的半焦汽车;
};
addcar()
{
字符选择;
做{
车*新车=新车;
cout>newcar->car\u name[新车->车号];
strcpy(新车->车号[新车->车号],新车->车名[新车->车号];
coutreg_id[新车->车号];
颜色[新车->车号];
coutcar_车型[新车->车号];
每日运价[新车->车号];
新车->车号++;
cout我建议您将数据结构更改为汽车属性的容器,而不是数组的单一结构
struct Car_Properties
{
public:
int number;
std::string name;
std::string model;
std::string colour;
std::string reg_id;
int rate_per_day;
std::string cars_in_lot;
};
std::vector<Car_Properties> car_inventory;
// Or
Car_Properties car_lot[SIZE];
如果要从文件中读取车辆属性,可以重载对象以读取其成员:
struct Car_Properties
{
public:
void load_by_prompting(std::istream& input,
std::ostream& output);
//...
}
void
Car_Properties ::
load_by_prompting(std::istream& input,
std::ostream& output)
{
output << "Enter car number: ";
input >> number;
output << "Enter car name: ";
std::getline(input, name);
// ...
}
int main()
{
Car_Properties das_auto;
// Input data into the variable
das_auto.load_by_prompting(std::cin, std::cout);
return EXIT_SUCCESS;
}
struct Car\u属性
{
公众:
通过提示无效加载(标准::istream&input,
std::ostream和输出);
//...
}
无效的
汽车物业::
通过提示加载(标准::istream&input,
标准::ostream和输出)
{
输出>数量;
输出使用std::string
使您的生活更轻松。还可以使用调试器使您的生活更轻松。因为您将汽车添加到一个对象(car*newcar=newcar;inaddcar()
)中的car*newcar=newcar;
中的显示汽车批次()
)。使用new
仅为新实例分配内存。可能您不需要在show\u cars\u in_lot()中使用new
。
@kay27程序未运行如果我不在show\u cars\u in_lot中编写新的,那么程序将以这种方式运行,但不起作用……您需要在show\u cars\u in_lot()中使用现有对象
,你不必再创建一个。如何使用:有很多种方法。例如,在main()中只使用new
一次,并将指针保存在某个地方。你能告诉我如何制作汽车的对象吗dynamically@AhsanAli:见我的编辑1。
struct Car_Properties
{
public:
void load_by_prompting(std::istream& input,
std::ostream& output);
//...
}
void
Car_Properties ::
load_by_prompting(std::istream& input,
std::ostream& output)
{
output << "Enter car number: ";
input >> number;
output << "Enter car name: ";
std::getline(input, name);
// ...
}
int main()
{
Car_Properties das_auto;
// Input data into the variable
das_auto.load_by_prompting(std::cin, std::cout);
return EXIT_SUCCESS;
}