如何使用QTextStream :: readLine函数?

时间:2012-03-30 12:10:31

标签: c++ qt

我正在尝试使用下面给出的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总是一次返回一个字符,但我的目的是一次读取一行并分割每一行以获得单独的逗号分隔值。

我错过了一些基本的东西吗?

3 个答案:

答案 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;
}