在c ++ borland builder

时间:2015-10-06 09:06:38

标签: string initialization c++builder c++builder-6

我正在做以下事情:

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

我在对strarr重新分配的行上出现了表达式语法错误。

任何想法为什么?

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

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

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

2 个答案:

答案 0 :(得分:1)

据我所知,大括号语法仅在初始化数组时用于每个C ++编译器。因此,您无法使用它进行重新分配。您可以使用循环或逐个元素分配。

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

答案 1 :(得分: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";
}
  

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

     

string strarr [] = {“”,“”,“”};

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

string strarr[3];