C++ 从大尺寸的.csv文件转换为二维数组
我在.csv文件中存储了HOG特征,该文件的尺寸为1967 X 2916。当我试图将值存储在一个简单的2D数组中时,我无法执行该过程。但可以运行到88 X 2916的尺寸。你能告诉我这背后的原因吗? 我使用的以.csv格式存储的功能可以在这里找到 代码看起来像这样C++ 从大尺寸的.csv文件转换为二维数组,c++,arrays,opencv,csv,C++,Arrays,Opencv,Csv,我在.csv文件中存储了HOG特征,该文件的尺寸为1967 X 2916。当我试图将值存储在一个简单的2D数组中时,我无法执行该过程。但可以运行到88 X 2916的尺寸。你能告诉我这背后的原因吗? 我使用的以.csv格式存储的功能可以在这里找到 代码看起来像这样 #include<fstream> #include <sstream> using namespace std; int main(){ float dataset[1967][2916];
#include<fstream>
#include <sstream>
using namespace std;
int main(){
float dataset[1967][2916];
ifstream file("data.csv");
for(int row = 0; row < 1967; ++row)
{
std::string line;
std::getline(file, line);
if ( !file.good() )
break;
std::stringstream iss(line);
for (int col = 0; col < 2916; ++col)
{
std::string val;
std::getline(iss, val, ',');
if ( !iss.good() )
break;
std::stringstream convertor(val);
convertor >> dataset[row][col];
}
}
for(int p=0;p<1967;++p)
{
cout<<endl;
for(int q=0;q<2916;++q)
{
cout<<dataset[p][q]<<"\t";
}
}
return 0;
#包括
#包括
使用名称空间std;
int main(){
浮动数据集[1967][2916];
ifstream文件(“data.csv”);
对于(int行=0;行<1967;++行)
{
std::字符串行;
std::getline(文件,行);
如果(!file.good())
打破
std::stringstream iss(线路);
for(整数列=0;列<2916;++col)
{
std::字符串val;
std::getline(iss,val,,);
如果(!iss.good())
打破
std::stringstream转换器(val);
转换器>>数据集[行][col];
}
}
对于(int p=0;p这可能是堆栈溢出,考虑到您在何处发布此消息,这很讽刺。堆栈通常限制在1-2MB左右(可以通过编程更改)
您可以通过使数据集
全局化来进行快速测试,从而将其移出堆栈:
float dataset[1967][2916];
int main(){
...
如果测试有效,您应该将dataset
放在堆上
相关:调试并查看它在哪里停止?!