2
C++で私のプログラムに深刻な問題があります。これは、すべてのWorker
クラスの1つのインスタンスに格納されなければならないユーザ入力の読み込みと保存に問題があります
Bill Jones 20 07:30 09:30 08:00 14:00 00:00 00:00 10:00 13:00 00:00 00:00
:私のようなユーザーが入力した情報の行に読む必要があります。私が問題を抱えているのは、セミコロンを使用しているからです。私は完全に立ち往生してどこでも見てきましたが、助けを見つけることはできません。 、次のコードブロックで
#include <iostream>
#include <string>
using namespace std;
class Time;
class Worker;
ostream &operator << (ostream &, const Time &);
istream &operator >> (istream &, Time &);
class Time
{
private:
int hour;
int minute;
public:
Time();
void setHour(int a)
{ hour=a; }
void setMinute(int a)
{ minute=a; }
int getHour() const
{ return hour; }
int getMinute() const
{ return minute; }
Time operator + (const Time &);
};
class Worker
{
public:
int start;
int end;
string fName;
string lName;
double payrate;
double payment;
Time monday,tuesday,wednesday,thursday,friday;
friend istream &operator >> (istream &, Time &);
friend ostream &operator << (ostream &, const Time &);
};
Time::Time()
{
hour = 0;
minute = 0;
}
ostream &operator << (ostream &strm, const Worker &obj)
{
strm << obj.fName << " " << obj.lName << " " << obj.payrate;
return strm;
}
istream &operator >>(istream &strm, Worker &obj)
{
strm >> obj.fName;
strm >> obj.lName;
strm >> obj.payrate;
string token;
int h,m;
string t;
for (int i=0; i<token.size(); i++) {
if(token[i]==':')
{
h = atoi (t.c_str());
t.clear();
}
else
{
t=t+token[i];
}
m=atoi(t.c_str());
}
obj.monday1.setHour(h);
obj.monday1.setMinute(m);
return strm;
}
Time Time::operator+ (const Time &right)
{
Time temp;
temp.hour = hour + right.hour;
temp.minute = minute + right.minute;
return temp;
}
int main()
{
Time time1, time2;
Worker worker[100];
int num;
cout << "Please enter the number of workers on the payrole: ";
cin >> num;
cout << "Please input the worker’s last name, first name, pay rate, start time, and end time from "<< endl;
cout << "Monday through Friday separated by space." << endl;
for (int i=0; i<num; i++)
{
cin >> worker[i];
}
for (int i=0; i<num; i++)
{
cout << worker[i];
}
return 0;
}
私は持っていません最近はC++で作業しましたが、入力文字列を分割する文字列関数があると思います - 擬似コード 'splitStringBy(" "、toArray [13]);'? –