Ok, I'm not sure what the problem was but I have this and it works now -in case somebody is interested:

    QString fName = QString::fromStdString(filename);
    QFile f(fName);

    if (!f.exists())
        return;

    int s = f.size();
    if (s <= 0)
        return;

    if (!f.open(QIODevice::ReadOnly))
        return;

    if (!f.isReadable())
        return;

    QByteArray bytes = f.readAll();

    char* bb = bytes.data();
    std::string str;
    for (int i=0; i<f.size(); ++i)
    {
        str += bb[i];
    }

    std::stringstream stream;
    stream << str;


On 08/02/2013 10:05 PM, Karl Ruetz wrote:

I'd try QDataStream.

For input:

QFile file("file.xxx");
file.open(QIODevice::ReadOnly);
QDataStream in(&file);

use >> operator or readBytes method to read

for output:

QFile file("file.xxx");
file.open(QIODevice::WriteOnly);
QDataStream out(&file);

use << operator or writeBytes() method to write.

Karl

On 2013-08-02 13:18, Rollastre Prostrit wrote:

Hi Qters:

Due to vicissitudes of a third party library I'm using I have to read
the bytes of png files (binary files) embedded in the resources via
using a std::istream. I have been struggling quite a bit with this and
googling a lot without success. Maybe this is something that it is easy
to solve but I haven't succeeded with it yet.

I use this snippet

      QFile f(":/images/file.png");

      if (!f.exist())
          return;

      if (f.size()<=0)
          return;

     if (!f.open(QIODevice::ReadOnly))
          return;

      if (!f.isReadable())
          return;

      QByteArray bytes = f.readAll();

      char* bb = bytes.data();
      std::string str;
      for (int i=0; i<s; ++i)
      {
          str += bb[i];
      }

      stringstream stream;
      stream << str;


I use strings here because some of the tens of articles I've read
suggested it. It doesn't seem to work, though. If I dump the bytes to a
temp file, I see the file becomes corrupted. There is an extra empty
byte right after the PNG header. My guess is that the zero-end byte is
messing everything up. But I admit that I don't find any solution for this.

Has somebody faced this problem and/or can see what/how is the solution?
Thanks in advance!
_______________________________________________
Interest mailing list
Interest@qt-project.org  <mailto:Interest@qt-project.org>
http://lists.qt-project.org/mailman/listinfo/interest



_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to