gpt4 book ai didi

c++ - Qt 运行时错误

转载 作者:行者123 更新时间:2023-11-27 23:25:54 27 4
gpt4 key购买 nike

我正在使用 Qt IDE。以下代码导致 Microsoft Visual C++ 运行时库错误。此外,该程序没有显示带有文本“NewYork”和“London”的项目,而是显示“NewYork”和“Londonk”,然后崩溃。这是代码。

void MainWindow::on_listWidget_itemClicked(QListWidgetItem *item)  // creates comments for item
{
ui->listWidget_2->clear();

ui->commentbutton->setEnabled(true);
QFile files("E:/"+QString::number(ui->listWidget->currentRow())+"com.txt");

if(files.exists())
{
if(!files.open(QFile::ReadOnly | QFile::Text))
{
QMessageBox::warning(this,"File Access!!!","The File containing data of the Items and Comments can't be acessed",QMessageBox::Ok);
return;
}
QTextStream in(&files);
QString data(in.readLine());
int x=0;

QString temp;

for(int i=0;;i++)
{
if(i>data.size())
break;



if(data.at(i)!='@' && data.at(i+1)!='#')
{
temp[x]=data.at(i);
x++;
}
else
if(data.at(i)=='@' && data.at(i+1)=='#')
{
QListWidgetItem *itm=new QListWidgetItem;

x=0;
i++;
itm->setText(temp);
ui->listWidget_2->addItem(itm);
}
}
files.close();
}

程序正确生成 Xcom.txt 文件(X 是一个数字)。我从中检索数据的文件包含此

NewYork@#London@#.

最佳答案

你的代码逻辑太复杂了。使用 QString.split获取您感兴趣的部分。

例子:

#include <QtCore>

int main(void)
{
QString foo("NewYork@#London@#");
QStringList parts = foo.split("@#", QString::SkipEmptyParts);
foreach(QString part, parts) {
qDebug() << part;
}
return 0;
}

您的代码可以简化为:

QString data(in.readLine());
QStringList parts = data.split("@#", QString::SkipEmptyParts);
foreach (QString part, parts) {
QListWidgetItem *itm=new QListWidgetItem;
itm->setText(part);
ui->listWidget_2->addItem(itm);
}

关于c++ - Qt 运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9555759/

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