0

我正在执行以下操作:

string strarr[]={"","",""};
if (a==b)
{
  strarr={"a","b","c"};
}
else
{
  strarr={"d","e","f"};
}

我在重新分配给 strarr 的行上遇到了表达式语法错误。

任何想法为什么?

我可以做些什么来初始化而不是:

string strarr[]={"","",""};

我正在使用 Borland C++Builder 6。

4

2 回答 2

1

据我所知,大括号语法仅在初始化数组时用于每个 C++ 编译器。因此,您不能将其用于重新分配。您可以改为使用循环或逐元素赋值。

如果您要分配的值的数量是恒定的并且它们的值是恒定的,则可以将它们放在一个常量数组中并遍历它以填充您的 starr[] 数组。

于 2015-10-07T07:13:42.727 回答
0

我在重新分配给 strarr 的行上遇到了表达式语法错误

任何想法为什么?

初始化后,您无法重新分配数组本身。您只能重新分配其元素,例如:

string strarr[]={"","",""};
if (a==b)
{
  strarr[0] = "a";
  strarr[1] = "b";
  strarr[2] = "c";
}
else
{
  strarr[0] = "d";
  strarr[1] = "e";
  strarr[2] = "f";
}

我可以做些什么来初始化而不是:

字符串 strarr[]={"","",""};

std::string有一个默认构造函数将其初始化为空值,因此根本不需要显式初始化它""。删除初始值,并指定数组的大小。让编译器为您调用构造函数:

string strarr[3];
于 2015-12-08T22:03:49.883 回答