OS X错误变量长度数组非pod元素类型'string'

时间:2016-07-07 12:01:43

标签: c++ macos

我想在c ++中使用字符串,但我不能。当我创建字符串时,我总是得到一条错误消息。我想解决这个问题所以如果有可能我不想使用。 (我不知道,我应该如何使用矩阵字符串)

以下是我的代码的一小部分:

#include <iostream>
#include <fstream>

using namespace std;

int main ()
{
    string fajlnev="tancrend.txt";
    ifstream fajl(fajlnev.c_str());

    int i=0;
    int db=0;
    string atmeneti;

    while (!fajl.eof())
    {
        getline(fajl,atmeneti);
        getline(fajl,atmeneti);
        getline(fajl,atmeneti);
        db++;
    }
    db--;

    string tanc[db][3];

    fajl.close();
    ifstream fajl2(fajlnev.c_str());

    for(i=0;i<db;i++)
    {
        fajl2>>tanc [i][0];
        fajl2>>tanc [i][1];
        fajl2>>tanc [i][2];
    }

1 个答案:

答案 0 :(得分:0)

string tanc[db][3];是非法的C ++。用作数组大小的所有值都应该是编译时常量(因此您应该能够在执行程序之前知道确切的值)。

有些编译器允许使用可变长度数组作为语言扩展,但这些数组通常是有限的(通常它们允许C允许但不多于此)。

在您的情况下,最好使用C ++可变长度容器:std::vector

std::vector<std::array<std::string, 3>> tanc(db);