无法打印CSV文件

Unable to print CSV file

本文关键字:文件 CSV 打印      更新时间:2023-10-16

下面的代码可以正常编译,因此没有语法错误。我有麻烦打印出CSV文件,我读到这一点的代码。我不确定是怎么回事,因为这是一个标准的程序,但会感谢一些输入,如何解决这个问题。我希望能够在控制台上打印出s的内容。您可以看到为什么s没有在控制台上打印吗?我错过什么了吗?

#include <cstdlib>
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <string.h>
#include <vector>
#include <fstream>
#include<iterator>
struct field_reader: std::ctype<char> {
    field_reader(): std::ctype<char>(get_table()) {}
    static std::ctype_base::mask const* get_table() {
        static std::vector<std::ctype_base::mask>
            rc(table_size, std::ctype_base::mask());
        rc[';'] = std::ctype_base::space;
        return &rc[0];
    }
};

struct Stud{
    double VehicleID;
    double FinancialYear;
    double VehicleType;
    double Manufacturer;
    double ConditionScore;

    friend std::istream &operator>>(std::istream &is, Stud &s) {
        return is >> s.VehicleID >> s.FinancialYear >> s.VehicleType >>      s.Manufacturer >> s.ConditionScore;
    }
    // we'll also add an operator<< to support printing these out:
    friend std::ostream &operator<<(std::ostream &os, Stud const &s) {
        return os << s.VehicleID  << "t"
                  << s.FinancialYear << "t"
                  << s.VehicleType    << "t"
                  << s.Manufacturer   << "t"
                  << s.ConditionScore;
    }
};
int main(){
// Open the file:
std::ifstream in("VehicleData_cs2v_1.csv");
// Use the ctype facet we defined above to classify `;` as white-space:
in.imbue(std::locale(std::locale(), new field_reader));
// read all the data into the vector:
std::vector<Stud> studs{(std::istream_iterator<Stud>(in)),
 std::istream_iterator<Stud>()};
// show what we read:
for (auto s : studs)
    std::cout << s << "n";
}
friend std::istream &operator>>(std::istream &is, Stud &s) {
    return is >> s.VehicleID >> s.FinancialYear >> s.VehicleType 
              >> s.Manufacturer >> s.ConditionScore;
}

忽略逗号完全存在的事实。我能想到的最原始的解决方案是

friend std::istream &operator>>(std::istream &is, Stud &s) {
    char comma;
    return is >> s.VehicleID >> comma
              >> s.FinancialYear >> comma
              >> s.VehicleType >> comma
              >> s.Manufacturer >> comma
              >> s.ConditionScore;
}