簡體   English   中英

僅使用讀取 .csv 文件並存儲到數組中<iostream> C++

[英]read .csv file and store into arrays using only <iostream> c++

您好,我想知道讀取 .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沒有,后面有一個\\n ,在cin.getline()沒有指定分隔符(因為默認分隔符是\\n本身)。

我已經測試過了; 這是鏈接https://ideone.com/ycht1b

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM