C++ 无法从.csv解析器获取任何输出

C++ 无法从.csv解析器获取任何输出,c++,csv,C++,Csv,下面的代码应该接受一个文件名,即“example.csv”,并输出一个2D数组 typedef vector<vector<double> > matrix; matrix importcsv(string filename) { ifstream myfile (filename); matrix contents {{0.0}}; char parens; double data; int i,j; while(!myfile.eo

下面的代码应该接受一个文件名,即“example.csv”,并输出一个2D数组

typedef vector<vector<double> > matrix;

matrix importcsv(string filename)
{
    ifstream myfile (filename);
    matrix contents {{0.0}}; 
    char parens; double data; int i,j;
    while(!myfile.eof())
    {
        if(myfile.get()==',')
        {
            ++j; 
            contents[i].resize(j+1); 
            myfile >> parens;
        }
        else if(myfile.get()=='\n')
        {
            ++i; 
            contents.resize(i+1);
            j=0; 
            contents[i].resize(j+1);
        }
        else
        {
            myfile >> data; 
            contents[i][j]=data;
        }
    }
    return contents;
}
typedef向量矩阵;
矩阵导入SV(字符串文件名)
{
ifstream myfile(文件名);
矩阵内容{0.0};
字符对;双数据;int i,j;
而(!myfile.eof())
{
如果(myfile.get()==',')
{
++j;
内容[i]。调整大小(j+1);
我的文件>>帕伦斯;
}
else if(myfile.get()='\n')
{
++一,;
内容。调整大小(i+1);
j=0;
内容[i]。调整大小(j+1);
}
其他的
{
myfile>>数据;
内容[i][j]=数据;
}
}
返回内容;
}
问题是:编译器运行平稳,但可执行文件不返回任何内容


当我手动写出循环时,即通过使用Ctrl+V手动重复代码,该函数按预期工作。所以错误一定是在“if”或“else if”语法中的某个地方…

我想我知道问题出在哪里了。在if语句中,
myfile.get()
实际上读取一个字符,而不仅仅是验证下一个字符是什么

因此,如果下一个字符是新行,第一个if语句将获得它,但将为false,第二个if也将不为true,因为前一个if已经吃掉了新行字符

做一些类似于:

    char c = myfile.get();
    if(c == ',')
    {
        ++j; 
        contents[i].resize(j+1); 
        myfile >> parens;
    }
    else if(c=='\n')
    {
        ++i; 
        contents.resize(i+1);
        j=0; 
        contents[i].resize(j+1);
    }
    else
    {
        myfile >> data; 
        contents[i][j]=data;
    }

你试过调试它吗?例如添加断点(或“我已经完成了这一步”)来查看代码是否执行?
编译器运行平稳,但可执行文件什么也不返回。
你说的“编译器运行平稳”是什么意思?它应该“运行平稳”,否则就无法生成可执行文件。啊-真知灼见!我一直在努力理解myfile.get()函数的实际功能。cplusplus.com上有一个非常好的文档。我什么都用它。以下是
get
函数的文档: