1

我有一个 .txt 文件,其中包含以下格式的数据:

1.23,2.34,3.45
4.56,5.67,6.78

如何在向量中插入数字

vector[1]={1.23,4.56,...}
vector[2]={2.34,5.67,...}
vector[3]={3.45,6.78,...}

代码

ifstream in("data.txt");
vector<vector<int> > v;

if (in) {
    string line;
    while (getline(in,line)) {
        v.push_back(std::vector<int>());
        stringstream split(line);
        int value;
        while (split >> value)
            v.back().push_back(value);
    }
}
4

1 回答 1

0

您的代码中存在多个问题

  1. 你的内在vector应该是 a vectoroffloatdouble代替int

  2. 您的value变量也应该是floatdouble

  3. 您需要在阅读时越过分隔符(逗号)。

  4. 您需要创建与每行中的值一样多的内部向量。我在下面通过一个布尔first变量完成了这个——我用它来确保我只在读取第一行时创建向量。

  5. to to 的内部向量的索引与push_back被推回的行上的值的列号相同。我使用一个变量col来确定当前在一行上读取的列号是什么。

您需要与列数一样多的内部向量。每个内部向量的成员数与文件中的行数一样多。

ifstream in("data.txt");
vector<vector<double> > v;

bool first = false;
if (in) 
{
    string line;
    while (getline(in,line)) 
    {
        istringstream split(line);
        double value;
        int col = 0;
        char sep;

        while (split >> value)
        {
            if(!first)
            {
                // Each new value read on line 1 should create a new inner vector
                v.push_back(std::vector<double>());
            }

            v[col].push_back(value);
            ++col;

            // read past the separator                
            split>>sep;
        }

        // Finished reading line 1 and creating as many inner
        // vectors as required            
        first = true;
    }

}
于 2013-07-07T14:29:10.720 回答