gpt4 book ai didi

c++ - 从C++的CSV文件中提取特定数据

转载 作者:行者123 更新时间:2023-12-01 14:39:32 25 4
gpt4 key购买 nike

我已经编写了读取CSV文件的程序,但是在c++中从该CSV文件提取数据时遇到了一些麻烦。我要数一数。从CSV文件的第一行的第5列到第一行的最后一列开始的列数。我已经编写了以下代码来读取CVS文件,但不确定如何计算否。正如我之前提到的那样。
如果有人可以告诉我我将如何处理,将不胜感激?

char* substring(char* source, int startIndex, int endIndex)
{
int size = endIndex - startIndex + 1;
char* s = new char[size+1];
strncpy(s, source + startIndex, size); //you can read the documentation of strncpy online
s[size] = '\0'; //make it null-terminated
return s;
}

char** readCSV(const char* csvFileName, int& csvLineCount)
{
ifstream fin(csvFileName);
if (!fin)
{
return nullptr;
}
csvLineCount = 0;
char line[1024];
while(fin.getline(line, 1024))
{
csvLineCount++;
};
char **lines = new char*[csvLineCount];
fin.clear();
fin.seekg(0, ios::beg);
for (int i=0; i<csvLineCount; i++)
{
fin.getline(line, 1024);
lines[i] = new char[strlen(line)+1];
strcpy(lines[i], line);

};
fin.close();
return lines;
}

我在CSV文件中附加了几行:-

省/州,国家/地区,纬度,经度,1/22 / 20、1 / 23 / 20、1 / 24/20,
,阿富汗,33.0,65.0,0,0,0,0,0,0,0,
,阿尔巴尼亚,41.1533,20.1683,0,0,0,0

我需要的是,在第一行中,Long之后的日期数。

最佳答案

您基本上想在行中搜索分隔符子字符串(通常为';')。
如果打印出行,则应如下所示:

a;b;c;d;e;f;g;h

有几种方法可以实现您想要的功能,我将寻找带状或分体式字符功能。以下示例中的内容应该可以工作。如果使用std,则可以使用str.IndexOf而不是循环。
int rows(char* line,char seperator, int count) {
unsigned length = strlen(line);
for (int i=pos; i<length;i++){
if(strcmp(line[i],seperator)) break;
}
count++;
if (i<length-1) return rows(substring(line,i,length-i),seperator,count);
else return count;
}

显然可以用一个循环来代替递归;)
int countSign(char* line, char* sign){
unsigned l = strlen(line);
int count = 0;
for (int i=0; i < l; i++) {
if(strcmp(line[i],sign)) count++;
}
}

关于c++ - 从C++的CSV文件中提取特定数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61324120/

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