我想检查用户输入的值是否在我打开的文件中。
我正在做出租车预订系统。用户输入= userTime(用户想要从出租车上取的时间)
我正在尝试检查此时间是否已经在所有驱动程序旁边(4)
在我的文件中
司机姓名,
司机号码,
预订时间
如果userTime与文件中所有4个驱动程序上预订的时间相同,那么系统会说没有可用的驱动程序
它是在24小时内,因此userTime将与预订时间内的文件内容完全匹配。例如1200 = 12pm
请尽快帮助谢谢p.s.我是c ++的新手
这是我的代码到目前为止,一个函数。它表示'表达式必须在第二个cab实例上有指向对象类型的指针'。以及cab.timeBooked上的两个[i]。有什么问题吗?
struct Driver
{
string firstName;
double number;
int timeBooked;
};
struct Driver cab;
void searchDrivers()
{
cout << "\nSearching for drivers..." << endl;
ifstream inFile;
inFile.open("drivers.txt");
if (!inFile)
{
cout << "error reading file";
}
else
{
for (int i = 0; i < 4; i++)
{
inFile >> cab.firstName[i] >> cab.number[i] >> cab.timeBooked[i];
if (userTime2 == cab.timeBooked[i])
{
cout << "unavailable" << endl;
}
else
{
cout << "car available" << endl;
driverIndex = i;
confirmBooking();
}
}
}
}
答案 0 :(得分:0)
你必须制作一个能够相应地读取和存储所有内容的结构,然后你可以将它与用户输入进行比较
结构将看起来像这样
struct foo
{
string name ;
long number ;
int time ;
}
然后你可以这样比较
foo e ;
// read from file and store in struct
if ( userinput == e.time )
// do something
=============================================== ========================== 我已经为1个驱动程序解决了这个问题,你可以弄清楚如何处理4
#include <iostream>
#include <fstream>
#include <conio.h>
using namespace std;
struct driver_data
{
string name;
size_t number;
int time;
};
void main ()
{
ifstream myfile ;
myfile.open("data.txt");
if ( ! myfile )
{
cout <<"error in opening file";
}
driver_data e1 , e2 , e3 ;
while ( ! myfile.eof() )
{
char ch[100];
myfile.getline (ch,100,'\n');
e1.name = ch ;
myfile.getline (ch,100,'\n');
e1.number = atoi( ch );
myfile.getline(ch , 100 , '\n');
e1.time = atoi ( ch );
}
int time_input_by_user ;
cout <<"enter the time you want the cab to arrive"<<endl ;
cin >> time_input_by_user ;
if (time_input_by_user == e1.time )
cout<<"car not available"<<endl;
else
cout<<"car available we'll be right on time"<<endl;
getch();
}
我有一个存储的文件(命名数据),其中包含以下数据。
john
2132151123
1200
mark
5121421231
1100
wayne
151231231
1000
harry
215612312
1500