QT:断言:文件 C:\Qt\Qt5.14.2\5.14.2\mingw73_64\include/QtCore/qstring.h 中的"uint(i) < ui



我有一个10行的文件,我想做一件在上下文中不重要的特定事情。到达一行的末尾后,程序因标题中的错误而崩溃。

我进入了它所指的头文件的行:

{ Q_ASSERT(uint(i) < uint(size())); return QChar(d->data()[i]); }

但我还是不明白。这是我的代码块:

QFile file("file.txt");
QTextStream in(&file);
QString s;
int i = 0;
while(!in.readLine().at(i).isNull()) {
s = s + in.readLine().at(i);
++i;
}

编辑:我想做的是在QString变量"s"中逐字符复制一行文件。

这意味着i不是从readLine()返回的任何内容的有效索引。换句话说,CCD_ 3大于线的长度。

循环中的逻辑真的很奇怪。我确信它没有做你认为它在做的事情。

认为你想写的是类似于的东西

QFile file("file.txt");
QTextStream in(&file);
QString s;
QString line = in.readLine();
int i = 0;
while (!line.at(i).isNull()) {
s = s + line.at(i);
++i;
}

该代码只读取一行,您的代码读取多行。

我看到了两个问题(除非我误解了at((和readLine((的工作原理(:

1( 在while()语句中,您使用...in.readLine()...读取一行,但在循环中,您再次使用另一个...in.readLine()...读取。因此,在第一次迭代开始时,您读取一行,然后在循环主体执行时,您再次读取一行。

2( 对于while的每一次迭代,您都在递增i并从in中获取该字符。因此,对于第一次迭代(i=0(,您获取第0个字符,对于第二次迭代(i=1(,您获得第1个字符。。。。等等

相关内容

  • 没有找到相关文章

最新更新