C++ 使用c+;从CSV文件数据写入数组时出现错误值+;

C++ 使用c+;从CSV文件数据写入数组时出现错误值+;,c++,C++,我创建了一个程序,它读取一个CSV文件,其中有两列,除第一行外,其余的行都是数值。读取后,它将值写入两个不同的数组(x[],y[])。我的问题是这个值读起来很完美,但是应该在x[0]的值是在x[-5],在x[0]有y[4]的值 下面是CSV文件中的数据 Distance,Time 10,12 57,69 40,54 60,71 90,200 68,76 我尝试过不同的方法来解决这个问题,但没有一种有效。如果可能的话,请帮助我 #包括 #包括 #包括 使用名称空间std; int main()

我创建了一个程序,它读取一个CSV文件,其中有两列,除第一行外,其余的行都是数值。读取后,它将值写入两个不同的数组(x[],y[])。我的问题是这个值读起来很完美,但是应该在x[0]的值是在x[-5],在x[0]有y[4]的值

下面是CSV文件中的数据

Distance,Time
10,12
57,69
40,54
60,71
90,200
68,76
我尝试过不同的方法来解决这个问题,但没有一种有效。如果可能的话,请帮助我

#包括
#包括
#包括
使用名称空间std;
int main()
{
ifstream数据(“data.csv”);
int Count=0,x[Count+1],y[Count+1],a=0;//删除a=0时,它的行为不同
if(data.is_open())
{
弦线,第1行;
//第一排
getline(数据,行',');

cout而不是具有固定大小的
int[]
。使用标准容器,如
std::vector
。并使用
push_back()
方法而不是
x[Count]=value;
来代替

#include <vector>
// ...
std::vector<int> x,y;
// ...
x.push_back(stoi(line));
y.push_back(stoi(line1));

int Count = x.size(); //or y.size() as they should be same
#包括
// ...
std::向量x,y;
// ...
x、 推回(stoi(线));
y、 推回(stoi(线路1));
int Count=x.size();//或y.size(),因为它们应该相同
您还可以使用成对向量,而不是两个向量
std::vector
或元组向量
std::vector


还应添加一些错误检查…

这里有一个使用
std::istringstream
std::vector
存储结果的解决方案。唯一真正的诀窍是用空格替换逗号,以便可以用
std::istringstream
解析它

#include <fstream>
#include <vector>
#include <sstream>
//...

ifstream infile("Data.csv");

std::string line;
std::getline(infile, line);//skip header line
std::vector<std::pair<int, int>> coords;
while (std::getline(infile, line))
{
    std::replace(line.begin(), line.end(), ',', ' ');//replace ',' with space
    std::istringstream iss(line);
    int x, y;
    if (!(iss >> x >> y)) { 
        break; // error in format
    }
    coords.emplace_back(x, y);
}
#包括
#包括
#包括
//...
ifstream infle(“Data.csv”);
std::字符串行;
std::getline(infle,line);//跳过标题行
std::向量坐标;
while(std::getline(infle,line))
{
std::replace(line.begin(),line.end(),',','');//用空格替换','
标准::istringstream iss(线);
int x,y;
如果(!(iss>>x>>y)){
break;//格式错误
}
坐标。向后放置(x,y);
}

您可能需要更好地处理实际代码中的格式错误情况。此外,如果需要,您还可以使标题可选(跳过第一行的错误)

数组中的两个问题:首先C++没有,第二个数组大小固定,不能扩展。看起来你需要学习和学习。例如,你知道,你的数组的大小是1?如果你读了一本好书,你也应该学习。什么是<代码> x(5)< /C>?