我想从一个CSV文件使用C++读取十六进制值到二维数组。我比较新,所以我可以使用一些帮助。C++跳过行,然后从一个CSV文件读取十六进制值到一个2D文件
我想跳过前98行(主要由文本组成),然后从文件中读取下100行。有22个逗号分隔的列,我只需要列8,10和13-20。第8列包含一个字符串,其余包含十六进制值。
以下是我所拥有的。它编译(不知何故),但我不断收到分段错误。我想我需要为阵列动态分配空间。此外,该代码不考虑字符串或整数到十六进制转换。
主要目前没有做任何事情,这只是一个测试套件。
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <sstream>
#include <stdlib.h>
const int ROWS = 100; // CAN messages
const int COLS = 22; // Colums per message
const int BUFFSIZE = 80;
using namespace std;
int **readCSV() {
int **array = 0;
std::ifstream file("power_steering.csv");
std::string line;
int col = 0;
int row = 0;
if (!file.is_open())
{
return 0;
}
for (int i = 1; i < 98; i++){
std::getline(file, line); // skip the first 98 lines
}
while(std::getline(file, line)) {
std::istringstream iss(line);
std::string result;
while(std::getline(iss, result, ',')) {
array[row][col] = atoi(result.c_str());
col = col+1;
}
row = row+1;
col = 0;
}
return array;
}
int main() {
int **array;
array = readCSV();
for (int i = 0; i < 100; i++) {
cout<<array[i][0];
}
return 0;
}
双指针是尝试使用c样式的数组。它使得数组[x] [y]语法可以工作,但只有在你为指向的指针实际分配内存的时候。我建议你忘记c样式数组(它们很难安全使用)并阅读关于std :: vector和/或std :: array的所有信息。你会更快乐。\ –