Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;从文本文件生成字符串摘要_C++ - Fatal编程技术网

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然后检查其
字符串是否相等,如果相等,则将其相加。