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

OS X error variable length array of non pod element type 'string'

本文关键字:数组 string 元素 pod 类型 错误 OS      更新时间:2023-10-16

我想在 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];
    }

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

一些编译器允许可变长度数组作为语言扩展,但这些通常是有限的(通常它们允许 C 允许的,仅此而已)。

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

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