类中的动态字符数组不会打印正确的结果
Dynamic char array from class dont printing the proper result
我正在制作一个项目,用户将在其中添加汽车信息,一个函数将显示所有可用的汽车。但是我无法将汽车名称从一个数组复制到另一个数组,这是代码。
#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<<"tttt(->) 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<<"tttt(->) reg!str@t!0n number : ";
cin>>newcar->reg_id[newcar->car_no];
cout<<endl;
cout<<"tttt(->) c0l0ur : ";
cin>>newcar->car_colour[newcar->car_no];
cout<<endl;
cout<<"tttt(->) Model : ";
cin>>newcar->car_model[newcar->car_no];
cout<<endl;
cout<<"tttt(->) 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<<"ttt(1) Show Cars in Lot"<<endl;
cout<<"ttt(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;
}
我建议你将数据结构更改为汽车属性的容器,而不是数组的单个结构。
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];
通常,上述方法更有效,因为汽车属性(对于单个汽车)在内存中是连续的。
注意:使用 std::vector
时,无需使用 new
运算符。 std::vector
将制作副本。 您将需要实现复制构造函数和赋值运算符。 提醒:还重载运算符==
和<
。
编辑 1:动态
创建Car_Properties最简单的方法是声明变量的实例:
int main()
{
Car_Properties das_auto; // This creates an instance in local memory.
//...
return EXIT_SUCCESS;
}
如果要从文件中读取汽车属性,可以重载对象以读取其成员:
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;
}
相关文章:
- C++使用 g++ 时,没有结果,没有打印
- oStream 不打印添加两个 valarray 的结果(使用运算符重载)
- cout 打印不准确的结果,printf 打印准确的结果
- 读取一组用户输入,按升序排序,然后打印结果
- 无法打印正确的结果
- 对象指针打印结果以相反的顺序进行
- GetTempPathA 函数在打印结果后崩溃
- 我定义的反向函数不是打印结果
- 声明双重给它一个值0,但打印结果意外变化
- 尝试将二进制数组转换为十六进制C++然后打印结果
- 在WINDBG中调用C 方法实例并打印结果
- infix/postfix/prefix程序.想要使用我的printresult()函数打印结果.需要帮助获得输出
- 计算文本文件中的单个字母并打印结果 - 错误的输出 C++
- 在C MBED中使用strstr,打印结果
- 没有语法错误,但没有打印结果
- 如果命令不只是打印结果,而是进入某种交互模式,如何处理来自C++的终端命令执行的输出?
- HTML词法分析器在c++中如何打印结果
- 迭代器遍历一对向量,并使用std::copy打印结果
- void() 问题 - 它不打印结果
- 如何将排序函数应用于字符串.find( ) 以按字母顺序打印结果