当我尝试将一对插入地图时,Qt程序seg出错
Qt program seg faults when I try to insert a pair into a map
我正在开发我的第一个Qt应用程序,实际上是小部件,当我尝试用<int, QString>
对填充标准库地图时,我遇到了段错误。我的目标是用整数键和 QString 值填充地图。我不知道配对是否是最好的方法,所以任何建议都会很棒。
这是除了主文件之外唯一的源文件。
#include "linuxtips.h"
#include "ui_linuxtips.h"
LinuxTips::LinuxTips(QWidget *parent) :
QWidget(parent),
ui(new Ui::LinuxTips)
{
loadRandTip();
ui->setupUi(this);
}
LinuxTips::~LinuxTips()
{
delete ui;
}
void LinuxTips::on_learnMore_clicked()
{
}
void LinuxTips::on_viewAll_clicked()
{
}
void LinuxTips::loadRandTip()
{
int i = 0;
std::map<int, QString>::iterator it;
QString line;
QFile inputFile(":/tipFile.txt");
inputFile.open(QIODevice::ReadOnly);
QTextStream in(&inputFile);
do{
line = in.readLine();
// this->TipMap.insert(it, std::pair<int, QString >(i,line));
i++;
}while(!in.atEnd());
}
如果我取消评论this->TipMap.insert(it, std::pair<int, QString >(i,line));
那么它将运行。由于这是一个 seg 错误,我确定它是内存溢出或空指针,但我只是不确定它是什么。感谢您的任何帮助。
我假设您的崩溃是由于以下行造成的:
std::map<int, QString>::iterator it;
this->TipMap.insert(it, std::pair<int, QString >(i,line));
您正在尝试使用无效(未初始化)的迭代器插入到地图中。您是否在调试或发布中运行它?您应该在调试中得到一个断言。
相关文章:
- 为什么我的Qt程序在断言失败后继续运行?
- 使用MSVC编译的Qt程序在app.exec()上崩溃
- 如何设置一个简单的CGAL+Qt程序
- C++Qt程序设计问题
- 我的Qt程序可以编译,但是当我在声明中使用ifstream时崩溃
- 如何在Qt程序中实现IDv3标签
- 我如何将OpenSSL包含在Linux上的Qt程序中
- 我的QT程序显示带有标题的空白窗口
- 如何使用QT程序中的默认应用程序打开使用相对路径的PDF
- QT程序使用插入时会崩溃
- Qt程序读取文本只看到多行文件中的一行
- 当我尝试使用 makefile 编译我的 qt 程序时,它不起作用
- 使用现有C程序编写Qt程序时未找到的符号
- 使用Qt程序构建加密++时发生链接器错误
- 尝试实例化 QWidget 时 QT 程序出现段错误
- 为什么我的QT程序被卡住了
- 使QT/C 程序显示其文件类型,如Windows上已知
- QT程序无法编译/具有运行时错误(IDE:CodeBlocks/QTCreator)
- 如果对象父对象是窗口,则Qt程序运行缓慢
- Qt程序每次都冻结