У меня есть CSV-файл, подобный этому
NAME, BANK ACCOUNT, SORT CODE, INVESTMENT
A 123 XXX 1000
B 456 XXX 2000
C 789 XXX 3000
Я хочу добавить дополнительный столбец, который делает файл похожим на
NAME, BANK ACCOUNT, SORT CODE, INVESTMENT, Contribution
A 123 XXX 1000 16.67
B 456 XXX 2000 33.33
C 789 XXX 3000 50
Я разработал float percentage
, которыйсодержит все необходимые элементы, и теперь я не понимаю, как добавить его в файл данных в виде дополнительной строки.
#include <vector>
#include <string>
#include <iostream>
#include <fstream>
#include <sstream>
#include <cmath>
#include <numeric>
using namespace std;
#define W1 0.2
vector<float>Data_investment;
string Trim(string& str);
string Trim(string& str)
{
str.erase(0, str.find_first_not_of(" \t\r\n"));
str.erase(str.find_last_not_of(" \t\r\n") + 1);
return str;
}
void Get_Data(const string& s, vector<float>& data)
{
ifstream fin(s);
string line;
int flag = 0;
while (getline(fin, line))
{
if (flag)
{
istringstream sin(line);
vector<string> fields;
string field;
while (getline(sin, field, ','))
{
fields.push_back(field);
}
string investment = Trim(fields[3]);
data.push_back(atof(const_cast<const char*>(investment.c_str())));
}
++flag;
}
}
int main()
{
Get_Data("aaa.csv", Data_investment);
int sum = 0;
for (auto i : Data_investment) {
sum += i;
}
float total = accumulate(Data_investment.begin(), Data_investment.end(), 0);
const unsigned int quantity = Data_investment.size();
for (unsigned int i = 0; i < quantity; ++i)
{
float percentage = (Data_investment[i] * 100.0f) / total;
cout << percentage << ", ";
}
cout << endl;
return 0;
}