我正在做以下事情:
string strarr[]={"","",""};
if (a==b)
{
strarr={"a","b","c"};
}
else
{
strarr={"d","e","f"};
}
我在对strarr重新分配的行上出现了表达式语法错误。
任何想法为什么?
我可以做什么来初始化而不是:
string strarr[]={"","",""};
我正在使用Borland C ++ Builder 6.
答案 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];