gpt4 book ai didi

c++ - 仅使用 c++ 读取 .csv 文件并存储到数组中

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:06:46 24 4
gpt4 key购买 nike

您好,我想知道读取 .csv 文件并将每个逗号分隔项存储到其自己的数组或变量中的最有效方法是什么。我只能用#include <iostream> .我正在考虑使用 .getLine(),但我只知道要存储的分隔符和值,因为没有 <fstream>。允许。话虽如此,有人知道我该怎么做吗?提前致谢!

这是文件的布局。第一行表示要读取的行数。

输入文件

3
2014,Computer Science,Utah,1568,44.9
2014,Marketing,Michigan,23745,983
215,Business Management, Idaho,256,674

代码:

int year;
char* major = new char[40];//cant be longer than 40 characters
char* state = new char[40];
int enrolled;
int rate;
char p;//for cin.get characters possibly

cin>>rows

for(int i = 0; i <= rows; i++){

HMMMMM?

}

最佳答案

您可以使用 cin.getline() 函数,它也接受分隔符。至于存储整个 csv 记录,您可以定义一个存储所有字段的结构。

#include <iostream>
#include <cstring>
using namespace std;

typedef struct temp_struct {
char major[40];
char state[40];
float rate;
int year;
int enrolled;
} RECORD;

int main() {
int rows;
cin >> rows;
RECORD r[rows];
char temp[100];
for(int i = 0; i < rows; i++) {
cin.getline(temp, 100, ',');
r[i].year = atoi(temp);

cin.getline(temp, 100, ',');
strcpy(r[i].major, temp);

cin.getline(temp, 100, ',');
strcpy(r[i].state,temp);

cin.getline(temp, 100, ',');
r[i].enrolled = atoi(temp);

cin.getline(temp, 100);
r[i].rate = atof(temp);

cout << r[i].year << " " << r[i].major << " " << r[i].state << " ";
cout << r[i].enrolled << " " << r[i].rate << endl;
}
return 0;
}

对于定界符,前四个定界符是 , 并且由于最后一个值 rate 没有 , ,而是后面有一个 \ncin.getline() 中没有指定分隔符(因为默认分隔符是 \n 本身)。

我已经测试过了;这是链接 https://ideone.com/ycht1b

关于c++ - 仅使用 <iostream> c++ 读取 .csv 文件并存储到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48760945/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com