我想新一StringArray
如下:如何新建一個字符串[]?
class Test
{
public:
QString* str[];
Test() {
str = new QString[];
}
};
是有一些錯誤:約str = new QString[]
?
我想新一StringArray
如下:如何新建一個字符串[]?
class Test
{
public:
QString* str[];
Test() {
str = new QString[];
}
};
是有一些錯誤:約str = new QString[]
?
您沒有爲數組指定大小。
注意,沒有爲delete
運營商特殊的語法刪除陣列時,還有:
QString* strings;
strings = new QString[10];
delete[] strings;
如果你想有一個動態數組,可以考慮使用STL向量(std::vector<QString>
在這種情況下)來代替。
順便說一句,它可以像Assignment,string [] = {「USA」,「CHINA」},?感謝您的幫助.. – 2012-03-26 05:22:14
@Tu_JianWu在C++ 11中,它可以是:'QString * arr = new QString [10] {「abc」,「def」};'您是否可以使用它取決於您的編譯器。 – bames53 2012-03-26 06:15:26
@ravuya:那實際上是不正確的。聲明中的'[]'會使'strings'成爲指針的指針。正確的聲明是'QString * strings;'。 – Kyle 2012-03-26 18:01:02
QString* str[];
聲明類型爲QString*
的數組。如果您需要單個字符串,您只需:
QString* str;
str = new QString;
但是,通常您不需要明確地分配動態內存。 QString
將提供自己的內存管理。
如果你需要一個字符串集合,你最好使用像vector這樣的容器類。
QVector<QString> str;
如果我將其更改爲QString* str;
,則存在錯誤:在']'標記之前的預期主表達式,我想要的是我有一個指向字符串列表的點,如「USA」,「CHINA」,「ENGLAND 「那麼,我該怎麼辦?感謝您的幫助... –
2012-03-26 05:07:49
尺寸必須指定,否則不起作用。
str = new QString[10];
QString* str[]
聲明的QString
指針數組。指針或多或少與數組同義。如果你只是想QString
的數組,你應該這樣做:
QString* str;
Test() {
str = new QString[10];
}
這將使str
點到10 QStrings
的數組。除非你想製作二維數組,否則聲明中的[]
是不正確的。當然,如果你這樣做,一定要記住delete [] str;
以釋放你的記憶。
如果數組的大小在編譯時是已知的,你過不使用任何動態分配的要好:
QString str[10];
Test() { }
此代碼將工作完全一樣的,因爲它上面,但你可以避免處理new
和delete
。或者,正如其他人所建議的那樣,您可以使用std::vector<QString>
並讓STL處理它。
感謝您的幫助......可以初始化爲Assignment,string [] = {「USA 「,」中國「},? – 2012-03-26 05:30:52
@Tu_JianWu:我對Qt並不熟悉,但我不明白爲什麼你不能這樣做。但是,你只能在一個函數內完成它。這個:'class Test {QString str [] = {「USA」,「CHINA」}; Test(){}};'除非您使用C++ 11,否則C++標準不允許。 – Kyle 2012-03-26 05:52:22
很可能你真的想要更像'std :: vector'(或使用Qt的一個集合)。 –
2012-03-26 05:03:48
Qt已經將'QStringList'作爲內置的typedef;我建議調查一下。 – tmpearce 2012-03-26 05:07:22
是啊!我知道QStringList,但我只是想關於C++的機制如何做到這一點,在我的記憶中,C++不能做到這一點,但我忘了..我不知道..阿哈.. – 2012-03-26 05:12:51