向量不推回向量(C++)

vector not pushing back vector (C++)

本文关键字:向量 C++      更新时间:2023-10-16

我正在尝试读取一个文件,并将文件的内容分配到一个向量向量(矩阵)中。问题是它似乎没有达到我需要的效果。我也不太熟悉矢量,所以请原谅任何明显的错误:P

#include <stdio.h>
#include <vector>
#include <string.h>
void readfile(const char* filename,
    std::vector< std::vector<float> >& output)
{
    std::vector<float> vec123(3);
    char buff[80];
    FILE* myfile;
    myfile = fopen(filename, "r");
    while(fgets(buff, sizeof(buff), myfile) != NULL) {
        sscanf(buff, "%f %f %f", vec123[0], vec123[1], vec123[2]);
        output.push_back(vec123);
    }
    fclose(myfile);
}

这是我的主菜:

int main() //yes, stdio.h, vector, "readfile" and string were included
{
    std::vector< std::vector<float> > myvec;
    readfile("myfile.txt", myvec); //file exists in my folder, valid
    printf("%fn", myvec[2][2]);   //valid numbers for the file I'm reading
    return 0;
}

问题是,如果它不给myvec分配任何东西,printf就会出错,但它似乎确实给myvecs分配了一些东西,因为无论我向它请求什么有效对象,它都会打印出一个零的浮点值。我知道一种简单的方法可以做到这一点,而不会遇到2D向量的麻烦,但遗憾的是,我的数学库针对矩阵进行了优化。myfile包含类似于"2.2 3.14159 1.0换行符9.3 2.2 2.2换行符…"

应该是:

sscanf(buff, "%f %f %f", &vec123[0], &vec123[1], &vec123[2]);

因为sscanf将指针作为参数。