gpt4 book ai didi

c++ - QTextStream 将 csv 文件中每一行的第一个字符与已知变量进行比较?

转载 作者:行者123 更新时间:2023-11-30 05:30:50 24 4
gpt4 key购买 nike

标题几乎说明了一切,但我最好更具体一点,以免混淆任何人(包括我自己)。

这两天没怎么成功。我有一个 CSV 文件,并使用 QTextStream 逐行打开/读取它。行长度仅设置为每行的第一个字符,line.at(0)。它将每行的开头与已知变量/整数进行比较。它有效,标签确实显示“找到匹配项”,但紧接着,应用程序崩溃了。它永远不会到达“未找到匹配项”。

我得到的错误:

ASSERT: "uint(i) < uint(size())" in file ..\..\..\..\Qt\5.0.2\mingw47_32\include/QtCore/qstring.h, line 729
Invalid parameter passed to C runtime function.
Invalid parameter passed to C runtime function.

有什么想法吗?有人吗?

哦,是的,这是导致这个令人头疼的函数的代码。

void DialogToll::ReadAndCompare()
{


QString Number = ui->Tolls->text();


QFile filetoCompare("C:/Tolls.txt");

if(filetoCompare.open(QIODevice::ReadOnly | QIODevice::Text))
{
QTextStream stream(&filetoCompare);
QString line;
do
{
line = stream.readLine();
if(line.at(0)== Number)
{
ui->label->setText("match Found!!!");
}
}while(!line.isNull());
ui->label->setText("No match Found!");

}
}

最佳答案

您逐行读取文件,但看起来有些行的长度为零,因此您的 line.at(0) 失败了。我将通过以下方式改进您的代码:

[..]
QTextStream stream(&filetoCompare);
do
{
QString line = stream.readLine();
if (line.size() > 0 && line.at(0) == Number)
{
ui->label->setText("match Found!!!");
}
} while (!line.isNull());
ui->label->setText("No match Found!");
[..]

请注意,我在比较第一个字符之前检查了该行的长度。

关于c++ - QTextStream 将 csv 文件中每一行的第一个字符与已知变量进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35787135/

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