我想新一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