c++ - 在 CSV 文件中查找相同的名称。 C++

标签 c++ csv

我正在尝试编写一个程序来比较两个或多个 CSV 文件并找到相同的名称,如果有两个或多个则将它们打印出来。每个名称在一个文件中只会出现一次。

这是典型文件的样子。

Name,E-mail,Student Level,Major
John Doe, jdoe@something.com, Freshman, CS
Jane Doe, janed@something.com, Freshman, CS
....

因此,如果这些名称中的任何一个在两个或多个文件中,程序应该打印出它们的名称以及它们的名称在文件中出现的总次数。

到目前为止,我已经做了这么多。我已经让它只打印出一个文件中的名称。不知道接下来要做什么。这是相关代码。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define buffer 1024

int main(){
    FILE *fp;
    char temp[buffer], *fn, *ln;
    char *first[buffer], *last[buffer];
    int line_count = 0;
    fp = fopen("students.csv", "r");

    while( (fgets(temp, buffer, fp) != NULL) )
    {
            first[line_count] = (char *)malloc(sizeof(char)* buffer);
            last[line_count] = (char *)malloc(sizeof(char) * buffer);

            ln = strtok(temp,",");
            fn = strtok(NULL,",");
            strcpy(first[line_count], fn);
            strcpy(last[line_count], ln);
            line_count++;
    }

    while(line_count--)
    {
            printf("Name : %s %s\n", first[line_count], last[line_count]);
    }

    fclose(fp);
    return 0;
}

我是 C++ 的新手(因此我用 C 编写代码),所以如果有人能给我指出正确的方向。那太好了。谢谢。

最佳答案

当您从 CSV 输入文件中读取每个名称时,您应该尝试将其插入到 std::set<std::string> 中。 (你需要 #include <set>#include <string> 。如果由于 key 已经存在而失败,你知道名称是你的输出之一。

关于c++ - 在 CSV 文件中查找相同的名称。 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14599043/

相关文章:

c++ - 如何在提升图中添加自定义边标签?

c++ - 错误 : Cannot add two pointers

c++ - Coderloop 不接受 Project Euler 解决方案

c++ - 隐式模板参数无效,但仍可编译

C# COM 对象和 CreateDispatch

python - 从具有字典列的csv构建 Pandas 数据框

python - 将两个词典合并在一起并将 None 添加到所需位置

将 TSV 文件中的内容转换为多维数组

string - go encoding/csv 中引用字符串的奇怪 CSV 结果

Java - 如何在 Map 数据结构中加载 CSV,键和值作为 POJO - Map<ClassA, ClassB>