我正在尝试使用下面给出的Qt代码从文本文件中读取值。
int ReadFromFile(QString fileName)
{
QFile file(fileName);
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return 1;
QTextStream in(&file);
while (!in.atEnd())
{
QString line = in.readLine(1); //read one line at a time
QStringList lstLine = line.split(",");
}
file.close();
return 0;
}
文本文件的内容如下:
1,0.173648178
2,0.342020143
3,0.5
4,0.64278761
5,0.766044443
6,0.866025404
然而,readLine总是一次返回一个字符,但我的目的是一次读取一行并分割每一行以获得单独的逗号分隔值。
我错过了一些基本的东西吗?
答案 0 :(得分:5)
是。您为maxlen
参数传递1,这意味着将行长度限制为仅1个字符。尝试不为maxlen
提供任何内容。
答案 1 :(得分:1)
从代码中删除零并尝试..
QTextStream in(&file);
while (!in.atEnd())
{
QString line = in.readLine(); //read one line at a time
QStringList lstLine = line.split(",");
}
答案 2 :(得分:1)
我知道这可能是一个旧帖子,但看起来你在每次迭代时都会覆盖你的lstLine变量。
这一个:
QStringList lstLine = line.split(",");
更改为
int ReadFromFile(QString fileName)
{
QStringList lstLine;
QFile file(fileName);
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return 1;
QTextStream in(&file);
while (!in.atEnd())
{
QString line = in.readLine(); //specifying number = # of characters
lstLine.append( line.split(",") );
}
file.close();
return 0;
}