C++ C++;从文本文件生成字符串摘要
我有一个包含以下字符串的文本文件:C++ C++;从文本文件生成字符串摘要,c++,C++,我有一个包含以下字符串的文本文件: Employee:HoursWorked:PayPerHour:DateWorked John:5:4:25Jan14 Amy:3:6:25Jan14 Will:4:7:27Jan14 Alan:7:3:25Jan14 我想做的是生成一份每日工资报告,如下所示: Date Total Salary 25Jan14 59 27Jan14 28 p>因为C++仍然是新的,到目前为止我只能做的是生成这个输出: Date
Employee:HoursWorked:PayPerHour:DateWorked
John:5:4:25Jan14
Amy:3:6:25Jan14
Will:4:7:27Jan14
Alan:7:3:25Jan14
我想做的是生成一份每日工资报告,如下所示:
Date Total Salary
25Jan14 59
27Jan14 28
<> p>因为C++仍然是新的,到目前为止我只能做的是生成这个输出:
Date: 25Jan14
Total Salary: 20
Date: 25Jan14
Total Salary: 18
Date: 27Jan14
Total Salary: 28
Date: 25Jan14
Total Salary: 21
下面是我的代码:
string date, fname, fhour, fpay, fdate;
int ihour, ipay, total, gtotal;
ifstream file ("salary.txt");
while (file)
{
getline(file, fname, ':');
getline(file, fhour, ':');
getline(file, fpay, ':');
getline(file, fdate);
ihour = atoi(fhour.c_str());
ipay = atoi(fpay.c_str());
cout << "Date: " << fdate << endl;
total = ihour * ipay;
gtotal += total; //Suppose to store the grand total of a single date
cout << "Total Salary: " << total << endl;
}
字符串日期、fname、fhour、fpay、fdate;
国际小时、国际平均日、总计、全球总计;
ifstream文件(“salary.txt”);
while(文件)
{
getline(文件,fname,':');
getline(文件,fhour,“:”);
getline(文件,fpay,,:);
getline(文件,fdate);
ihour=atoi(fhour.c_str());
ipay=atoi(fpay.c_str());
您需要存储与其对应的日期相关的工资
,然后将相同日期的所有工资相加。这是awk
中的一行:awk-F:'NR>1{a[$4]+=$2*$3}结束{print“date\t总工资”;对于(a中的i)print i,a[i]}'salary.txt
;)@PaulEvans,除了它不在C++
:)我应该使用vector吗?我对如何将工资与日期关联有点困惑,你能详细说明一下吗?@user3234825你可以使用vector
。我已经设法将值存储到一个向量对中,但我如何进行比较,以便如果数据如果日期相同,则工资将相加?我尝试使用此if语句检查:if(vdatetotal[i]。first==vdate[i]),但后来我意识到这没有意义,因为日期肯定是相同的。@user3234825然后检查其字符串是否相等,如果相等,则将其相加。