gpt4 book ai didi

c++ - QFileDialog "destroys"文件名

转载 作者:行者123 更新时间:2023-11-28 07:26:57 24 4
gpt4 key购买 nike

现在我正在为一套用于生物信息学的控制台应用程序开发 GUI,并且我正在做我的第一个测试,这是我使用 Qt 的第一个项目。我正在使用 QtDesigner 制作 GUI,除了 QFileDialog 将文件名的末尾转换为一个奇怪的字符外,一切正常,尽管我不确定它是 QFileDialog 还是从 QString const char

这是我的代码:

QString file=QFileDialog::getOpenFileName(this, tr("Open File"),"/home/",tr("Any file (*.*)"));
QString fastqdumpDir = "/home/nsg/Downloads/sratoolkit.2.1.16-centos_linux32/bin/"
fastqdumpDir=fastqdumpDir+"./fastq-dump ";
QString cmdStr =fastqdumpDir + file;
const char* command = cmdStr.toStdString().c_str();
system(command);

fastq-dump程序结束,因为它说文件名不正确,调试后,我看到文件名从/home/nsg/Downloads/SRR502947.sra变成了< strong>/home/nsg/Downloads/SRR502947.sra[] 有时甚至 /home/nsg/Downloads/SRR5029[]

知道为什么会发生这种情况或如何解决它吗?

最佳答案

您的问题是您正在调用 QString::toStdString(),它返回一个临时对象,并试图获取其内容的指针。指向的内存随着 std::string 被销毁而变得无效。您根本不需要中间 std::string 。这应该有效:

QString cmdStr =fastqdumpDir + file;
system( qPrintable(cmdStr) );

关于c++ - QFileDialog "destroys"文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18597018/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com