在抛出"char const*"实例后终止调用
Terminate called after throwing an instance of 'char const*'
我创建了一个简单的隐写库,我正在尝试创建一个小的Qt 5.0.2应用程序来测试它。它由两个textit组成,用于存储&显示路径名,以及弹出文件对话框选择文件TXT和bmp的两个按钮,以允许前者"嵌入"到后者中。
但是当我点击"生成"按钮时,它抛出"抛出'char const*'实例后调用终止"。
void MainWindow::on_generate_clicked()
{
BmpFile bm(MainWindow::bmpName);
char *outputFile = "test1.bmp";
if( bm.hide(MainWindow::bmpName, MainWindow::txtName, outputFile) == 0 )
{
printf("Hidding done.n");
}
else
{
printf("Error!");
}
}
是抛出错误的Qt槽。
void MainWindow::on_selFile_clicked()
{
QString txtname(MainWindow::txtName);
txtname = QFileDialog::getOpenFileName(this, tr("Open file"),"",tr("Files (*.txt)"));
ui->fileBox->setText(txtname);
QByteArray ba = txtname.toLocal8Bit();
MainWindow::txtName = ba.data();
}
void MainWindow::on_selBitmap_clicked()
{
QString bmpname=(MainWindow::bmpName);
bmpname = QFileDialog::getOpenFileName(this, tr("Open file"),"",tr("Files (*.bmp)"));
ui->bmpBox->setText(bmpname);
QByteArray ba = bmpname.toLocal8Bit();
MainWindow::bmpName = ba.data();
}
是处理和存储两个文件的两个槽
这是图书馆
我有一种感觉,它与转换为QString和返回有关,但我不确定。
根据OP上的讨论,我建议您将文件名保留为QString。替换char* bmpName;与QString strBmpName;在你的头部。然后将下面一行的QString转换为char*。
BmpFile bm(MainWindow::bmpName);
QByteArray ba = strBmpName.toLocal8Bit();
BmpFile bm(ba.data());
相关文章:
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- 我收到以下错误:抛出'std::bad_alloc'实例后终止调用
- C++应用程序 MySQL odbc 数据库连接错误:在引发"otl_tmpl_exception<>"实例后终止调用
- 在抛出 'std::runtime_error' 的实例后终止调用 what(): Filebuf 和 ostream 的 I/O 错误
- 在字符串函数中抛出'char const*'实例后调用的终止
- 在抛出 what() 的实例后调用'std::logic_error'终止:basic_string::_M_construct 空无效
- 抛出实例'std::out_of_range'后调用的终止
- 在抛出 'std::invalid_argument' 的实例后终止调用 what(): stoi (找不到问题所在)
- 在抛出"std::out_of_range"的实例后调用的 C++ 终止 std::vector
- C++程序问题:抛出'std::invalid_argument'实例后终止调用
- 在使用标准向量函数时引发'std::bad_alloc'实例后调用的终止
- 获取错误:在抛出"std::bad::alloc"的实例后终止调用 what(): std::bad_alloc
- 在抛出 'std::bad_weak_ptr' 的实例后终止调用 what(): bad_weak_ptr?
- 抛出 'std::logic_error' basic_string::_S_construct null 无效的实例后调用的终止
- "if (argc < 2 || argc > 2)"应该有 2 个参数吗?&终止在抛出'std::out_of_range'错误实例后调用
- 在抛出 'std::regex_error' 的实例后调用终止 what(): 括号未关闭
- 在抛出 'std::invalid_argument' 的实例后调用终止 what(): stoi 错误 in leet
- 调试"在抛出 ..) 实例后终止调用",当异常 _should_ 被捕获时
- 如何使用 H实例终止应用程序