在setFile到带有QString的QFileInfoList时出错
Error at setFile to a QFileInfoList with a QString
让我们假设我有:
QList<QString> filenameList;
filenameList包含一些文件的路径。
然后创建一个QFileInfoList
QFileInfoList fileInfoList;
我如何使用。setfile方法在fileInfoList的每个对象?我试着:
for(int i=0;i<filenameList.length();i++)
{
fileInfoList[i].setFile(filenameList[i]);
}
但是我在尝试程序后(它成功编译)得到这个错误。
ASSERT failure in QList<T>::at: "index out of range"
有人能帮帮我吗?
fileInfoList在尝试访问列表的第一个元素时为空。你要做的是用
替换对setFile的调用fileInfoList.append(QFileInfo(filenameList[i]));
由于您正在编写c++,而不是C,因此使用索引对列表元素进行直接迭代有点向后看,而且容易出错。std::copy
或至少范围-为你的朋友。
您可以使用以下帮助函数:
// standard algorithms
QFileInfoList fileInfoListFromPaths(const QStringList & list) {
QFileInfoList result;
result.reserve(list.size());
std::copy(list.begin(), list.end(), std::back_inserter(result));
return result;
}
// explicit iteration
QFileInfoList fileInfoListFromPaths(const QStringList & list) {
QFileInfoList result;
result.reserve(list.size());
#if 1
// C++11
for (path : list) result << QFileInfo(path);
#else
// or C++98
foreach (path, list) result << QFileInfo(path);
#endif
return result;
}
相关文章:
- 访问者访问变体并返回不同类型时出错
- 在Linux for Windows上编译C++代码时出错
- 读取文件的最后一行并输入到链接列表时出错
- 重载操作程序时出错>>用于类中的字符串 memebr
- 调用专用模板时出错"no matching function for call to [...]"
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- LINK 尝试使用 OpenSSL evp aes 256 c++ 时出错
- 在Google Kick start中提交时出错
- 在c++中访问int到类对象的映射时出错
- 分段错误当我试图运行程序时出错
- 使用dynamic_cast和构造函数时出错
- CHECK(调用)函数在Google Colab中出错
- 用pybind11包装C++抽象类时出错
- 为x86而非x64编译时出错
- 从R调用C++函数并对其进行集成时出错
- 这个函数哪里出错了
- C++ 创建包含链表和字符串的对象的链接列表时出错
- 为重写std::exception的库生成swig接口时出错
- 导入/导出变量时出错
- 在setFile到带有QString的QFileInfoList时出错