提示コードですが.csvファイルを読み込んでint型のvectorの二次元に格納したいのですがどうすればいいのでしょうか?単に数字だけでなく
, や改行などを考えて改行の場所でうまく次の配列の先頭から数字を入れてといった処理を作り関数化したいのですがどうすればいいのでしょうか??取り敢えず作ってみましたがもうわけがわかりません。
#include "stdio.h" #include "stdlib.h" #include <vector> int main() { FILE *fp; // char *tm = NULL; //読み込んだ.csvファイルの文字列 char tm[5000]; //読み込んだ.csvファイルの文字列 const char *filename = "MapLayer1.csv";//.csvファイルを読み込む //int *mIndex = ; std::vector<std::vector<int>> idx;//マップチップ番号格納 int c = 0; int vi = 0; fp = fopen(filename,"r"); if(fp == NULL) { printf("読み込み失敗\n"); exit(1); } printf("読み込み成功\n"); while(fscanf(fp, "%s", tm) != EOF) { printf("%zd\n", strlen(tm)); printf("%s\n", tm); int t = strlen(tm);//文字列の長さを所得 int i = 0; char c[20]; int a = 0; while(true) { if(tm[i] >= '0' && tm[i] <= '9') { c[a] = tm[i]; a++; }else { long k; a = 0; k = strtol(c,NULL,0);//文字列を数字に変換して最後のidx配列の配列に書き込む idx.at(vi).push_back(k); memset(c, '\0', sizeof(c)); //一時文字列変数をリセット } } idx.emplace_back();//1次元目に一つ要素を追加 vi++; } return 0; }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/07/27 14:17
2020/07/27 14:27