使用运算符<<与 QStringList 指针
Using the operator<< with a QStringList pointer
如何更改此代码?
QString s="123";
QStringList *myList=new QStringList;
myList<<s;
错误:
与"运算符<<"不匹配(操作数类型为"QStringList*"和 "QString"(
*myList<<s;
也不起作用:在此之后,myList 是空的。
将
指针用于QStringList
几乎没有意义,因为这是一个由于写入时复制而隐式共享的类。您可以在下面找到更多详细信息:
http://qt-project.org/doc/qt-5.1/qtcore/implicit-sharing.html
这意味着,我会将您的代码重构为如下所示:
QString s="123";
QStringList myList;
myList << s;
请注意,您还有一个错字myList
,因为您似乎写了myLis
.这至少是一个会导致编译错误的语法错误。如果您支持C++11语法,也可以为此使用:
QString s="123";
QStringList myList({s});
当您有更多元素要插入而无需单独连续附加行时,这将派上用场。
但是,如果您出于某种原因仍然有兴趣这样做,您应该考虑以下几点:
myList->append(s);
或者作为最后的手段,如果你没有犯任何其他错误,即使你的线路也应该有效。这应该是整个代码,以查看您是否犯了任何其他错误:
主.cpp
#include <QStringList>
#include <QDebug>
int main()
{
QString s="123";
QStringList *myList = new QStringList;
*myList<<s;
qDebug() << *myList;
return 0;
}
建筑(类似的东西(
g++ -Wall -fPIC -I/usr/include/qt -I/usr/include/qt/QtCore -lQt5Core main.cpp && ./a.out
输出
("123")
<<
是一个重载运算符。我认为你应该尝试
(*myList)<<s;
编辑我刚刚测试过,*myList << s;
似乎有效...也许您还有其他问题...
如果你使用的是指向QStringList的指针,你必须在使用后手动删除它,因为这个类不是QOBJECT,也不使用Qt垃圾收集器系统。
相关文章:
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 呼叫运营商<<临时
- 使用QProcess执行命令,并将结果存储在QStringList中
- 如何防止clang格式在流运算符调用之间添加换行符<<
- <<操作员在下面的行中工作
- Qt:当QListView获得新条目时,如何更新QStringList
- QStringList vs list<shared_ptr<QString>> 性能比较C++
- 删除所有字符串后如何恢复 QStringList?
- Qt C++ 如何在 1 个命令中砍掉属于 QStringList 成员的 QString 字母
- 如何通过比较彼此的成员从QStringList中删除元素
- 将 QList 转换为 QStringList 以插入到 QComboBox 中
- 如何显式调用运算符<<
- 如何在QListWidget中显示QStringList的每个项目QLabel和另一个QString?
- Qt C++ - 用双引号构造一个 QStringlist
- 在C++中操作 QStringList
- 模板操作员&lt;未打电话
- C / CUDA中的模板方法是3个角括号(&lt;&lt;&lt;)
- C - 创建矢量&lt; vector&lt; double&gt;&gt;矩阵具有分配而不是inizializ
- 错误:调用"std::vector<:vector<int>>::p ush_back(std::vector<std::__cxx11::basic_string<
- 如何从 QStringList 中删除空字符串和空字符串