我做了以下內容:初始化和重新分配字符串
string strarr[]={"","",""};
if (a==b)
{
strarr={"a","b","c"};
}
else
{
strarr={"d","e","f"};
}
和我調動到strarr線得到了表達語法錯誤。
任何想法爲什麼?
我可以爲初始化做什麼,而不是:
string strarr[]={"","",""};
我使用Borland C++ Builder的6
我做了以下內容:初始化和重新分配字符串
string strarr[]={"","",""};
if (a==b)
{
strarr={"a","b","c"};
}
else
{
strarr={"d","e","f"};
}
和我調動到strarr線得到了表達語法錯誤。
任何想法爲什麼?
我可以爲初始化做什麼,而不是:
string strarr[]={"","",""};
我使用Borland C++ Builder的6
據我所知,大括號語法僅用於初始化數組時,用於每個C++編譯器。因此您不能將其用於重新分配。您可以使用循環或逐個元素的賦值。
如果要分配的值的數量是恆定的,並且它們的值是常量,則可以將它們置於一個常數數組中,並遍歷它以填充starr []數組。
我得到了重新分配的線表達式語法錯誤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];
您可以一次只設置一次數組(作爲聲明+定義它)!如果您需要使用不同的初始化配置,您可以使用#define #ifndef,#ifdef,#endif' pragmas,但不能將變量值用作條件。如果您需要在運行時更改數組的值,則需要逐個執行...如果字符串未更改,則可以使用指向不同的常量數組的指針 – Spektre