关于在csv中写入文件

时间:2019-05-15 09:30:09

标签: c++ csv

我有一个必须读取的CSV文件,并且在写入之前已删除重复的值。

重复值将基于两列(日期,价格)(AND条件语句)。因此,在下面的示例中,第1行,第2行和第4行将被写入CSV。第3行符合条件(因为第1行的日期和价格相同),因此将被排除(不写入CSV)。

address      floor       date         price
40 B STREET    18        3/29/2015    2200000
40 B STREET    23        1/7/2015     999000
40 B STREET    18        3/29/2015    2200000
40 B STREET    18        4/29/2015    2200000

1 个答案:

答案 0 :(得分:0)

您可以使用日期和价格地图查找重复项。我没有分享完整的代码,但这将为您提供如何做所需的指示。

1)创建日期和价格的地图。

std::map<std::string, long> dataMap;

2)从CSV读取一行。在dataMap中进行查找。如果找到了key(日期),请检查value(价格),如果两者都匹配,则表示重复,您应该忽略此记录。

// Read a line from CSV and parse it to store
// different values in below variables. This should
// be in a loop where each loop will be fetching
// a line from the CSV. The loop should continue till
// you reach end of the input CSV file.
int floorValue;  
std::string addressValue;  
std::string dateValue; 
long priceValue;

// The benefit of using map is observed here, where you  
// can find a particular date in O(log n) time complexity  
auto it = dataMap.find(dateValue)
if (it != dataMap.end())
    if (it->second == priceValue)
        // Ignore this record
else
{
    // Write this entry into another CSV file.  
    // You can later rename this to the original  
    // CSV file, which will give an impression that  
    // your duplicate entries have been removed  
    // from the original CSV file.  
}